Ten en cuenta Daniel, que el hecho de que te guste un código o no a veces es un poco subjetivo. Lo que le guste a Leo no tiene porque ser siempre lo que te guste a tí o a mí. Por ejemplo en las declaraciones de función:
Yo soy más partidario de poner las llaves así porque se ve mejor cuando empieza y cuando acaba:
Pero eso es cuestión de gustos.
Bueno y ya hablando del código, esta función:
Esa función no es muy portable, puesto que para que funcione la cadena debe medir exactamente 6 caracteres.
Existe una función de la librería estándar que te calcula el tamaño de una cadena:
Podemos ayudarnos de ella para reescribir la función:
De esa forma esta función te valdrá para cualquier tamaño de cadena, por lo que la podrás reutilizar siempre que quieras.
Y aunque no la pienses reutilizar, es una buena costumbre hacer las funciones lo más generales posibles, de lo contrario te podrías encontrar con errores extraños si modificas el código.
Y siguiendo otra vez con la función, ese pow no es necesario. Podemos definir la potencia aprovechando las iteraciones del for, lo que haremos es cambiar el sentido del for y añadir una variable más:
Y por último, quitaría ese 48 por un '0':
Código (cpp) [Seleccionar]
void binarioConvertir(int num, char cad[]){
//...
}
Yo soy más partidario de poner las llaves así porque se ve mejor cuando empieza y cuando acaba:
Código (cpp) [Seleccionar]
void binarioConvertir(int num, char cad[])
{
//...
}
Pero eso es cuestión de gustos.
Bueno y ya hablando del código, esta función:
Código (cpp) [Seleccionar]
int convertir_a_decimal (char cad[]){
int decimal=0,i;
for (i=6;i>=0;i--){
if (cad[6-i]!='0'){
decimal+=pow (2,i*((cad[6-i])-48));
}
}
return decimal;
}
Esa función no es muy portable, puesto que para que funcione la cadena debe medir exactamente 6 caracteres.
Existe una función de la librería estándar que te calcula el tamaño de una cadena:
Código (cpp) [Seleccionar]
#include <string.h>
//...
strlen(cadena);
Podemos ayudarnos de ella para reescribir la función:
Código (cpp) [Seleccionar]
int convertir_a_decimal (char cad[]){
int decimal=0,i;
int tam_cadena = strlen(cad);
for (i = tam_cadena-1;i>=0;i--)
{
if (cad[tam_cadena-i]!='0')
{
decimal+=pow (2,i*((cad[tam_cadena-i])-48));
}
}
return decimal;
}
De esa forma esta función te valdrá para cualquier tamaño de cadena, por lo que la podrás reutilizar siempre que quieras.
Y aunque no la pienses reutilizar, es una buena costumbre hacer las funciones lo más generales posibles, de lo contrario te podrías encontrar con errores extraños si modificas el código.
Y siguiendo otra vez con la función, ese pow no es necesario. Podemos definir la potencia aprovechando las iteraciones del for, lo que haremos es cambiar el sentido del for y añadir una variable más:
Código (cpp) [Seleccionar]
int convertir_a_decimal (char cad[])
{
int decimal=0,i;
int tam_cadena = strlen(cad);
int multiplicador = 1;
for (i = 0; i < tam_cadena; i++)
{
if (cad[tam_cadena-i]!='0')
{
decimal += multiplicador * (cad[tam_cadena-i])-48);
multiplicador *= 2;
}
}
return decimal;
}
Y por último, quitaría ese 48 por un '0':
Código (cpp) [Seleccionar]
int convertir_a_decimal (char cad[])
{
int decimal=0,i;
int tam_cadena = strlen(cad);
int multiplicador = 1;
for (i = 0; i < tam_cadena; i++)
{
if (cad[tam_cadena-i] != '0')
{
decimal += multiplicador * (cad[tam_cadena-i]) - '0');
multiplicador *= 2;
}
}
return decimal;
}