• Domingo 15 de Diciembre de 2024, 00:45

Autor Tema:  Char A Int  (Leído 1146 veces)

Lightningdd

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
    • http://lightningdd.byethost5.com/
Char A Int
« en: Lunes 18 de Septiembre de 2006, 00:18 »
0
Hola

Tengo una función que debe leer un número binario y transformarlo a decimal, bien ya lo tenia pensado y lo implemente, pero creo que tengo un problema, leo el numero binario en un array de caracteres (char[]) de tamaño fijo (21), pero creo que no puedo manejarlo bien, tengo el siguiente código:
Código: Text
  1. int BINDEC(char[21] pBinario)
  2. {
  3.     unsigned int res = 0;
  4.     int potencia = 1;
  5.     int longitud = strlen(pBinario);
  6.    
  7.     if(longitud == 1)
  8.     {
  9.       return char[0];
  10.     }    
  11.     else
  12.     {
  13.       res = char[0];
  14.      
  15.       for(int i = longitud; i >= 1; i--)
  16.       {
  17.         potencia * 2;
  18.         res += pBinario[i - 1] * potencia;
  19.       }
  20.      
  21.       return res;    
  22.     }              
  23. }
  24.  
  25.  
No se si exista alguna función o algo para manejar binarios o quizás para convertir de char a int, además de eso me manda un error en:
Código: Text
  1. int BINDEC(char[21] pBinario)
  2.  
  3.  
Creo que no esta bien definido, ojala puedan ayudarme soy nuevo en C.

Gracias.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Char A Int
« Respuesta #1 en: Lunes 18 de Septiembre de 2006, 02:02 »
0
Cita de: "Lightningdd"
Hola

Tengo una función que debe leer un número binario y transformarlo a decimal, bien ya lo tenia pensado y lo implemente, pero creo que tengo un problema, leo el numero binario en un array de caracteres (char[]) de tamaño fijo (21), pero creo que no puedo manejarlo bien, tengo el siguiente código:
Código: Text
  1. int BINDEC(char[21] pBinario)
  2. {
  3.     unsigned int res = 0;
  4.     int potencia = 1;
  5.     int longitud = strlen(pBinario);
  6.    
  7.     if(longitud == 1)
  8.     {
  9.       return char[0];
  10.     }    
  11.     else
  12.     {
  13.       res = char[0];
  14.      
  15.       for(int i = longitud; i >= 1; i--)
  16.       {
  17.         potencia * 2;
  18.         res += pBinario[i - 1] * potencia;
  19.       }
  20.      
  21.       return res;    
  22.     }              
  23. }
  24.  
  25.  
No se si exista alguna función o algo para manejar binarios o quizás para convertir de char a int, además de eso me manda un error en:
Código: Text
  1. int BINDEC(char[21] pBinario)
  2.  
  3.  
Creo que no esta bien definido, ojala puedan ayudarme soy nuevo en C.

Gracias.
Hay varios problemas en tu código, para empezar, la función no se declara como la has puesto, sino de esta manera:
Código: Text
  1.  
  2. int BINDEC( char pBinario[ 21 ] )
  3.  
  4.  
Luego, en el código haces referencia a una variable llamada char cuando debieras usar pBinario, recuerda, char es un tipo de dato, y pBinario es una variable que declaraste como un array de ese tipo de datos.

Tu contador empieza en una posición errónea, debiera ser longitud - 2. También, no hay necesidad de que coloques esto:
Código: Text
  1.  
  2.       res = pBinario[0]; // (tú pusiste res = char[ 0 ], lo cual está mal.
  3.  
  4.  
fuera del ciclo, bien puedes meterlo y hacer que el ciclo termine al llegar a 0 y no a 1.

Por último, estás tratando de obtener los valores 1 o 0 del array, pero estos son valores de tipo char y no enteros, puedes hacer la suma pero te dará algo completamente erróneo de esa forma. Puedes obtener el dígito 1 o 0 de esta forma:
Código: Text
  1.  
  2. int digito;
  3. digito = pBinario[ i ] == '1' ? 1 : 0;
  4.  
  5.  

Espero te sirva, ya luego comentarás. Por cierto, quizá esto te sirva:
http://codigolatino.allhyper.com/private/E...vate/nueve.html
(A ver si no lo borra JuanK :P).

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip