Curso-lenguaje-C/curso-juantxi/Ejercicios/0302conversiones.c

84 lines
1.5 KiB
C

#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
char cadena[20];
int numero;
printf("\nIntroduce un número para mostrar: ");
scanf("%d", &numero);
printf("\nEl número en decimal es %d", numero);
printf("\nEl número en octal es %o", numero);
printf("\nEl número en hexadecimal es %x", numero);
// Opción 1
// itoa(numero, cadena, 2);
printf("En binario es : %s");
/* Opción 2
// * C++ version 0.4 char* style "itoa":
// * Written by Lukás Chmela
// * Released under GPLv3.
int base = 2;
char* itoa(int numero, char* cadena, int base) {
// check that the base if valid
if (base < 2 || base > 36) { *cadena = '\0'; return cadena; }
char* ptr = cadena, *ptr1 = cadena, tmp_char;
int tmp_value;
do {
tmp_value = numero;
numero /= base;
*ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - numero * base)];
} while ( numero );
// Apply negative sign
if (tmp_value < 0) *ptr++ = '-';
*ptr-- = '\0';
while(ptr1 < ptr) {
tmp_char = *ptr;
*ptr--= *ptr1;
*ptr1++ = tmp_char;
}
return cadena;
}
*/
/* Opción 3
*/
int bin[8];
int aux;
printf("\nEl número en binario es ");
for (aux = 7; aux >= 0; aux--) {
if (numero % 2 == 0)
bin[aux] = 0;
else
bin[aux] = 1;
numero = numero / 2;
}
for (aux = 0; aux < 8; aux++)
printf("%d ", bin[aux]);
printf("\n");
return 0;
}