Hola, es un poco tarde (ya son más de las 11 de la noche), pero estuve viajando y no habÃa podido conectarme antes :) Bueno, lo importante es que ahora seguiremos con la continuación de nuestra serie de artÃculos para convertir un número decimal entero positivo a su equivalente en binario en varios lenguajes de programación, y hoy es el turno del lenguaje C.
Como te darás cuenta, en lenguaje C las cosas cambian un poquito, ya que no trae las funciones nativas que vemos en otros lenguajes para concatenar cadenas de caracteres, por lo que nosotros mismos tendremos que hacer nuestra propia función para hacer esta tarea. Aquà está el código:
#include <stdio.h> #include <stdlib.h> #include <string.h> char *concatenar(char *cadena, char caracter); void main() { printf("Ingrese un numero entero positivo\n"); int numero; char *binario = ""; scanf("%d",&numero); if (numero > 0) { while (numero > 0) { if (numero%2 == 0) { char c = '0'; binario = concatenar(binario, c); } else { char c = '1'; binario = concatenar(binario, c); } numero = (int) numero/2; } } else if (numero == 0) { binario = "0"; } else { binario = "No se pudo convertir el numero. Ingrese solo numeros positivo"; } printf("El resultado de la conversion es: %s",binario); } // Función encargada de ir armando la cadena del resultado char *concatenar(char *cadena, char caracter) { char *binario; int i; binario = (char*)malloc(strlen(cadena) + 2); binario[0] = caracter; // Encontramos el final de la cadena for (i = 1; cadena[i-1] != '\0'; i++) { binario[i] = cadena[i-1]; } // Añadimos el caracter de fin de cadena binario[i++] = '\0'; return binario; }
Ahora solo resta probar que esto funcione. Para hacerlo usamos el DEV C++, ingresando por teclado el numero 13, que como ya hemos visto en anteriores artÃculos, el resultado debe ser 1101:
la funcion no seria, "int main" en lugar de "void main", por que al final tiene un return binario;
ResponderBorrarLa verdad, se puede utilizar cualquiera de los dos: "int main()" ó "void main()". De todas formas, C los reconoce a ambos como métodos principales. La única diferencia es que en "int main" debemos de retornar un valor (entero), mientras que con el void no
ResponderBorrar