[?]numero de 1 y 0 en un vector [solucionado]

Iniciado por macshivi, 27 Octubre 2016, 21:15 PM

0 Miembros y 1 Visitante están viendo este tema.

macshivi

He realizado un programa que al introducir un numero de caracter en un vector te dice el numero de 1 y 0.

#include <stdio.h>
/*#include <math.h>*/
int main (int argc, char *argv[]) {


char bin[100];
int n=0,n2=0,i;/*decimal0,decimal1,i;*/
printf("Escribe un numero binario:\n:");
scanf("%c",&bin);
/*Cantidad de 1 y 0*/
for(i=0;i<100;i++) {
/*cantidad de 1 y 0*/

if ((bin[i]=49) ||(bin[i]=48)) {
n=n+1;
printf("%d",n);
}
n2=n2+1;
}
printf("N2 vale %d\n",n2);
printf("N vale %d\n",n);
return 0;
}

El problema es que cuando lo ejecuto,  la funcion "if" no funciona de la manera que espero (que a n se le sume uno cuando lea que hay un caracter con el valor 49  y 48 en ASCII que equivale al 1 y al 0) y y empieza a sumar un uno a n cada vez que se ejecuta el bucle.

En este caso n tendria que valer 3

Gracias por vuestro tiempo

engel lex

tienes 2 errores

primero
scanf("%c",&bin);
%c lee un caracter... si quieres leer una cadena de ellos usa %s o %99c (99 porque el ultimo debe ser \0)

segundo
((bin[i]=49) ||(bin[i]=48))

cada vez que llegas al if, bin se torna 49... tienes que usar "==" para comprar no "="
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

macshivi

Cita de: engel lex en 27 Octubre 2016, 21:32 PM
tienes 2 errores

primero
scanf("%c",&bin);
%c lee un caracter... si quieres leer una cadena de ellos usa %s o %99c (99 porque el ultimo debe ser \0)

segundo
((bin[i]=49) ||(bin[i]=48))

cada vez que llegas al if, bin se torna 49... tienes que usar "==" para comprar no "="

Me ha funcionado. muchas gracias.