• Viernes 8 de Noviembre de 2024, 17:56

Autor Tema:  Ayudaaaaaaaaaaaaaaaa  (Leído 1015 veces)

kamlife_86

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Ayudaaaaaaaaaaaaaaaa
« en: Sábado 22 de Abril de 2006, 01:14 »
0
Oigan tengo un problema.. hace poco comence en esto de la programacion y quise hacer un programa que convirtiera de decimal a binario, decimal a octal y decimal a hexadecimal.. el programa  me funciona super.. lo unico es que cuando dice.. desea realizar otra conversion? coloco 's' osea si.. realizo mi otra operacion y el resultado es la combinacion del resultado anterior con el presente.. ejemplo..


ingrese el numero a convertir a binario...:

ingreso por ejemplo 10.

y el resultado que tengo es 1010.. ¡correcto..¡

luego me dice..

desa hacer otra operacion s\n?

coloco s

elijo convertir decimal a binario..

coloco otra vez el 10 para convertirlo a binario

y el resultado no es 10 sino

424242421010...

¿QUISIERA SABER POR QUE PORFAVOR?


Este es el codigo

//NO SE COMO  HACER PARA QUE PARA LA SEGUNDA VUELTA NO ME HEREDE LOS DATOS
#include<process.h>
#include<iostream.h>
#include<stdlib.h>
int a,i,b,op;

char resp='s';

void main()
{
cout<<system("color a");
char v[100];
   while(resp=='s')
   {
cout<<"\n\t\tQue desea Hacer" << endl;
cout<<"\n\t1-Convertir Decimal a Binario"<< endl;
cout<<"\n\t2-Convertir Decimal a Octal"<<endl;
cout<<"\n\t3-Convertir Decimal a Hexadecimal"<<endl;
cin>>op;
while(op<1||op>3)
{system("cls");
   cout<<"\n\tOpcion Ivalida" << endl;
cout<<"\n\t1-Decimal a Binario"<< endl;
cout<<"\n\t2-Decimal a Octal"<<endl;
cout<<"\n\t3-Decimal a Hexadecimal"<<endl;
cin>>op;
}


switch(op)
{
case 1:
   {
   cout<<"\n\tIngrese el numero a convertir a binario.......:";
   cin>>a;
int n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;
   v=a%2;
   a=a/2;
   b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En binario es ";
for(i=b-1;i>=0;i--){

cout<< (int)v;}
   }break;
case 2:
   {
cout<<"\n\tIngrese el numero a convertir a Octal.......:";
   cin>>a;
int n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;
   v=a%8;
   a=a/8;
   b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En octal es ";
for(i=b-1;i>=0;i--){

cout<< (int)v;}
   }break;
default:
   {cout<<"\n\tIngrese el numero a convertir a hexadecimal.......:";
   cin>>a;
double  n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;

   v=a%16;
   a=a/16;
   b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En Hexadecimal  es ";
for(i=b-1;i>=0;i--){
if(v<=9)
cout<< (int)v;
else
if(v==10)
cout<< "A";
else
if(v==11)
cout<< "B";
else
if(v==12)
cout<< "C";
else
if(v==13)
cout<< "D";
else
if(v==14)
cout<< "E";
else if(v=15)
cout<< "F";

}
   }
}



cout<<"\n\tOtra s/n?";
cin>>resp;

if(resp=='s')
system("cls");


else
system("pause");
   }


}
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Ayudaaaaaaaaaaaaaaaa
« Respuesta #1 en: Sábado 22 de Abril de 2006, 04:36 »
0
Tu problema está con la variable b al momento de cada ciclo de conversión, nunca la inicializas y, por tanto, cada ciclo tiene un valor mayor y no el que esperas. Simplemente, antes de cada ciclo inicialízala a 0.

También, es buena idea inicializar el array v, aunque si la variable b tiene el valor correcto, quizá no tengas problemas.

Un consejo: ASEGÚRATE de que una variable (contadores, especialmente) tiene el valor inicial que tú supones que debería tener (hay que inicializar TODO para evitar errores como este o aún más sutiles).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

kamlife_86

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Ayudaaaaaaaaaaaaaaaa
« Respuesta #2 en: Sábado 22 de Abril de 2006, 06:39 »
0
muchas gracias.. ya me funciona.. con eso que me digistes... aunque tambien habia  hecho una pequeña trampa que tambien funciona... vela para que veas.. ya sabes cuando hagas un programa sencillo pero didactico me lo pasas..  gracias,....



#include<process.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
int a,i,b,op;

char resp='s';

void main()
{
cout<<system("color a");
char v[100];
   while(resp=='s')
   {
cout<<"\n\t\tQue desea Hacer" << endl;
cout<<"\n\t1-Convertir Decimal a Binario"<< endl;
cout<<"\n\t2-Convertir Decimal a Octal"<<endl;
cout<<"\n\t3-Convertir Decimal a Hexadecimal"<<endl;


cin>>op;
while(op<1||op>3)
{system("cls");
   cout<<"\n\tOpcion Ivalida" << endl;
cout<<"\n\t1-Decimal a Binario"<< endl;
cout<<"\n\t2-Decimal a Octal"<<endl;
cout<<"\n\t3-Decimal a Hexadecimal"<<endl;
cin>>op;
}


switch(op)
{
case 1:
   {
   cout<<"\n\tIngrese el numero a convertir a binario.......:";
   cin>>a;
int n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;
   v=a%2;
   a=a/2;
   b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En binario es ";
for(i=b-1;i>=0;i--){
if(v==20)
{cout<<"";}else

cout<< (int)v;}
   }break;
case 2:
   {
cout<<"\n\tIngrese el numero a convertir a Octal.......:";
   cin>>a;
int n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;
   v=a%8;
   a=a/8;
   b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En octal es ";
for(i=b-1;i>=0;i--){
if(v==20)
{cout<<"";}else

cout<< (int)v;}
   }break;
default:
   {cout<<"\n\tIngrese el numero a convertir a hexadecimal.......:";
   cin>>a;
double  n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;

   v=a%16;
   a=a/16;
   b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En Hexadecimal  es ";
for(i=b-1;i>=0;i--){
if(v<=9)
cout<< (int)v;
else
if(v==10)
cout<< "A";
else
if(v==11)
cout<< "B";
else
if(v==12)
cout<< "C";

else
if(v==13)
cout<< "D";
else
if(v==14)
cout<< "E";else
if(v==20)
cout<<"";

else if(v=15)
cout<< "F";

}
   }
}



cout<<"\n\tOtra s/n?";
cin>>resp;

if(resp=='s'){
system("cls");
//al terminar lleno todo el array con el valor 20, o con el que sea
for(i=0;i<=100;i++)
v=20;
}
else
system("pause");
   }


}