CONVERSIONES AYUDA POR FAVOR

HIUM Hill
17 de Julio del 2011
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
#include
#include

char menu()
{
char c;

printf("1 - Decimal -> Binarion");
printf("2 - Decimal -> Octaln");
printf("3 - Decimal -> Hexadecimaln");
printf("4 - Binario -> Decimaln");
printf("5 - Binario -> Octaln");
printf("6 - Binario -> Hexadecimaln");
printf("7 - Octal -> Decimaln");
printf("8 - Octal -> Binarion");
printf("9 - Octal -> Hexadecimaln");
printf("A - Hexadecimal -> Decimaln");
printf("B - Hexadecimal -> Binarion");
printf("C - Hexadecimal -> Octaln");
printf("S - Salirn");

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(;;) //NO ENTIENDO POR QUE ESTE FOR(;;)!!
{
clrscr();
op = menu();
clrscr();

switch(op)
{
case '1':
printf("Conversor Decimal -> Binarion");
printf("Introduza un numero Decimal: ");
scanf("%lu",&n);
printf("Numero Binario correspondente: ");
printf("%lu",conversor(n,2,10));
break;

case '2':
printf("Conversor Decimal -> Octaln");
printf("Introduza um numero Decimal: ");
scanf("%lu",&n);
printf("Numero Octal correspondente: ");
printf("%lo",n);
break;

case '3':
printf("Conversor Decimal -> Hexadecimaln");
printf("Introduza um numero Decimal: ");
scanf("%lu",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",n);
break;

case '4':
printf("Conversor Binario -> Decimaln");
printf("Introduza un numero Binario: ");
scanf("%lu",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",conversor(n,10,2));
break;

case '5':
printf("Conversor Binario -> Octaln");
printf("Introduza un numero Binario: ");
scanf("%lu",&n);
printf("Numero Octal correspondente: ");
printf("%lo",conversor(n,10,2));
break;

case '6':
printf("Conversor Binario -> Hexadecimaln");
printf("Introduza un numero Binario: ");
scanf("%ld",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",conversor(n,10,2));
break;

case '7':
printf("Conversor Octal -> Decimaln");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",n);
break;

case '8':
printf("Conversor Octal -> Binarion");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Binario correspondente: ");
printf("%lu",conversor(n,2,10));
break;

case '9':
printf("Conversor Octal -> Hexadecimaln");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",n);
break;

case 'A':
case 'a':
printf("Conversor Hexadecimal -> Decimaln");
printf("Introduza un numero Hexadecimal: ");
scanf("%lx",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",n);
break;

case 'B':
case 'b':
printf("Conversor Hexadecimal -> Binarion");
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 -> Octaln");
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();
}
}