Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: HIUM en 23 Julio 2011, 00:14 am



Título: Programa de conversiones. ayuda por favor
Publicado por: HIUM en 23 Julio 2011, 00:14 am
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();
}
}


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: bigfu en 23 Julio 2011, 00:53 am
¿Qué es lo que no entiendes del unsigned long conversor? ¿Lo que es o lo que hace?


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: HIUM en 23 Julio 2011, 01:17 am
esa funcion no la entiendo amigo!! y cuando comienza el for

for(;;) que hace ese for?

por favor!


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: Queta en 23 Julio 2011, 01:27 am
Ese for hace un bucle infinito.


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: HIUM en 23 Julio 2011, 01:35 am
y la funcion que hace? creo que es para realizar todas las conversiones!!


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: Queta en 23 Julio 2011, 01:43 am
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...


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: HIUM en 23 Julio 2011, 15:49 pm
por favor


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: bigfu en 23 Julio 2011, 16:11 pm
Sabes como hacerlo manualmente?? es decir, sabes convertir entre bases numéricas??


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: HIUM en 23 Julio 2011, 16:31 pm
si! pero me cuesta un poco para hexadecimal y viceversa


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: bigfu en 23 Julio 2011, 16:56 pm
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.


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: HIUM en 24 Julio 2011, 22:28 pm
Gracias amigo! ya estuve practicando! ahora soy un verdugo en esas conversiones. Pero no entiendo la funcion esa al principio del programa!


Título: Re: Programa de conversiones. ayuda por favor
Publicado por: HIUM en 29 Julio 2011, 03:00 am
MUCHACHOS GRACIAS POR TODA SU AYUDA!!! INVESTIGUE MAS COSAS E INCLUSO PUDE MEJORAR EL CODIGO!!!