Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: macshivi en 27 Octubre 2016, 21:15 pm



Título: [?]numero de 1 y 0 en un vector [solucionado]
Publicado por: macshivi en 27 Octubre 2016, 21:15 pm
He realizado un programa que al introducir un numero de caracter en un vector te dice el numero de 1 y 0.
Código
  1. #include <stdio.h>
  2. /*#include <math.h>*/
  3. int main (int argc, char *argv[]) {
  4.  
  5.  
  6. char bin[100];
  7. int n=0,n2=0,i;/*decimal0,decimal1,i;*/
  8. printf("Escribe un numero binario:\n:");
  9. scanf("%c",&bin);
  10. /*Cantidad de 1 y 0*/
  11. for(i=0;i<100;i++) {
  12. /*cantidad de 1 y 0*/
  13.  
  14. if ((bin[i]=49) ||(bin[i]=48)) {
  15. n=n+1;
  16. printf("%d",n);
  17. }
  18. n2=n2+1;
  19. }
  20. printf("N2 vale %d\n",n2);
  21. printf("N vale %d\n",n);
  22. return 0;
  23. }
  24.  
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.
(http://imageshack.com/a/img924/2554/q4yQov.png)
En este caso n tendria que valer 3

Gracias por vuestro tiempo


Título: Re: [?]numero de 1 y 0 en un vector
Publicado por: engel lex en 27 Octubre 2016, 21:32 pm
tienes 2 errores

primero
Código:
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
Código:
((bin[i]=49) ||(bin[i]=48))

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


Título: Re: [?]numero de 1 y 0 en un vector
Publicado por: macshivi en 27 Octubre 2016, 21:50 pm
tienes 2 errores

primero
Código:
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
Código:
((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.