Buenas! tengo un problema con este código, por problemas ajenos pude entregar a las clases de programacion II y el profe nos recomendo este código para practicar. No entiendo algunas cosas, como por ejemplo: for(;;), la funcion unsigned long conversor.
EL CODIGO TRATA DE UNAS CONVERSIONES DE DECIMAL A BINARIO, BINARIO A OCTAL Y ASÍ SUCESIVAMENTE. NECESITO ALGUNOS TIPS DE ESTE CODIGO POR FAVOR!!
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
char menu()
{
char c;
printf("1 - Decimal -> Binario\n");
//printf("2 - Decimal -> Octal\n");
printf("3 - Decimal -> Hexadecimal\n");
printf("4 - Binario -> Decimal\n");
//printf("5 - Binario -> Octal\n");
printf("6 - Binario -> Hexadecimal\n");
//printf("7 - Octal -> Decimal\n");
//printf("8 - Octal -> Binario\n");
//printf("9 - Octal -> Hexadecimal\n");
printf("A - Hexadecimal -> Decimal\n");
printf("B - Hexadecimal -> Binario\n");
//printf("C - Hexadecimal -> Octal\n");
printf("S - Salir\n");
printf("\nSeleccione opcion: ");
c = getche();
return c;
}
unsigned long conversor(unsigned long n1,int base1,int base2)
{
unsigned long alg,mult=1,n2=0;
while (n1 > 0)
{
alg = n1 % base1;
n1 /= base1;
n2 += (alg*mult);
mult *= base2;
}
return n2;
}
void main()
{
unsigned long n;
char op;
for(;;)
{
clrscr();
op = menu();
clrscr();
switch(op)
{
case '1':
printf("Conversor Decimal -> Binario\n");
printf("Introduza un numero Decimal: ");
scanf("%lu",&n);
printf("Numero Binario correspondente: ");
printf("%lu",conversor(n,2,10));
break;
/*case '2':
printf("Conversor Decimal -> Octal\n");
printf("Introduza um numero Decimal: ");
scanf("%lu",&n);
printf("Numero Octal correspondente: ");
printf("%lo",n);
break; */
case '3':
printf("Conversor Decimal -> Hexadecimal\n");
printf("Introduza um numero Decimal: ");
scanf("%lu",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",n);
break;
case '4':
printf("Conversor Binario -> Decimal\n");
printf("Introduza un numero Binario: ");
scanf("%lu",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",conversor(n,10,2));
break;
/*case '5':
printf("Conversor Binario -> Octal\n");
printf("Introduza un numero Binario: ");
scanf("%lu",&n);
printf("Numero Octal correspondente: ");
printf("%lo",conversor(n,10,2));
break;*/
case '6':
printf("Conversor Binario -> Hexadecimal\n");
printf("Introduza un numero Binario: ");
scanf("%ld",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",conversor(n,10,2));
break;
/*case '7':
printf("Conversor Octal -> Decimal\n");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",n);
break;
case '8':
printf("Conversor Octal -> Binario\n");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Binario correspondente: ");
printf("%lu",conversor(n,2,10));
break;
case '9':
printf("Conversor Octal -> Hexadecimal\n");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",n);
break; */
case 'A':
case 'a':
printf("Conversor Hexadecimal -> Decimal\n");
printf("Introduza un numero Hexadecimal: ");
scanf("%lx",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",n);
break;
case 'B':
case 'b':
printf("Conversor Hexadecimal -> Binario\n");
printf("Introduza un numero Hexadecimal: ");
scanf("%lx",&n);
printf("Numero Binario correspondente: ");
printf("%lu",conversor(n,2,10));
break;
/*case 'C':
case 'c':
printf("Conversor Hexadecimal -> Octal\n");
printf("Introduza un numero Hexadecimal: ");
scanf("%lx",&n);
printf("Numero Octal correspondente: ");
printf("%lo",n);
break; */
case 'S':
case 's':
exit(0);
break;
default:
printf("Opcion invalida!");
}
getch();
}
}
¿Qué es lo que no entiendes del unsigned long conversor? ¿Lo que es o lo que hace?
esa funcion no la entiendo amigo!! y cuando comienza el for
for(;;) que hace ese for?
por favor!
Ese for hace un bucle infinito.
y la funcion que hace? creo que es para realizar todas las conversiones!!
http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B (http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B)
Esfuérzate un poquito anda...
por favor
Sabes como hacerlo manualmente?? es decir, sabes convertir entre bases numéricas??
si! pero me cuesta un poco para hexadecimal y viceversa
Bueno, pues intenta hacer un ejemplo facilito en un papel con el código de la función, paso por paso. Verás como lo entiendes rápidamente.
Y la conversión para hexadecimal es igual que las demás, lo único es que si el resto está entre 10 y 15, ha de sustituirse por A, B, C, D, E o F.
Gracias amigo! ya estuve practicando! ahora soy un verdugo en esas conversiones. Pero no entiendo la funcion esa al principio del programa!
MUCHACHOS GRACIAS POR TODA SU AYUDA!!! INVESTIGUE MAS COSAS E INCLUSO PUDE MEJORAR EL CODIGO!!!