auxilio
Publicado: Lun Sep 20, 2004 5:45 am
Diseñe un programa con la utilización de funciones que permita el ingreso de un número entero y calcule su valor en una base distinta a la decimal. Las bases que puede consultar el usuario son: binaria, octal, hexadecimal. En caso que el número sea negativo, el programa sólo lo puede transformar a su representación en Complemento – 2.
El programa debe contener:
- Una función que permita transformar el número ingresado por el usuario a la base que éste consulte.(parámetros por referencia)
- Una función que entregue el valor del complemento-2 para el caso que el número sea negativo.(parámetros por valor)
tengo esto
#include <iostream.h>
#include <stdio.h>
//void cbin (int &);
//para paso por referencia se maneja todo igual que con valor pero en el prototipo de funcion se coloca
// & luego de la variable y en la funcion que recibe se coloca de nuevo el & y ya.
//el cout es para imprimir
//cin para leer
//
void main()
{
int num,b,entero;
cout<<endl<<"Introduzca un numero:\n";
cin>>num;
if (num<0)
{
cout<<"num<-x";
}
else
{
cout<<"\nIntroduzca la base:\n";
cin>>b;
}
if ((b!=2)&&(b!=8)&&(b!=16))
cout<<"\nError: datos incorrectos\n";
else
cout<<"\nNumero convertido: ";
int copia=num;
int res,pot=1;
int bin=0,oct=0,hex=0;
switch(b)
{
case 2: do
{
res=copia%2;
if (res==0)
bin*=10;
else
bin+=(res*pot);
copia/=2;
pot*=10;
}while(copia !=0 && copia != 1);
bin=(bin*10)+copia;
cout<<bin;
break;
case 8: do
{
res=copia%8;
if (res==0)
bin*=10;
else
bin+=(res*pot);
copia/=2;
pot*=10;
}while(copia !=0 && copia != 1 && copia != 2 && copia !=3 && copia != 4 && copia != 5 && copia != 6 && copia != 7);
bin=(bin*10)+copia;
cout<<oct;
cin.get();
break;
case 16: do
{
res=copia%16;
if (res==0)
bin*=10;
else
bin+=(res*pot);
copia/=2;
pot*=10;
}while(copia !=0 && copia != 1 && copia != 2 && copia !=3 && copia != 4 && copia != 5 && copia != 6 && copia != 7 && copia != 8 && copia != 9 && copia != 10 && copia != 11 && copia != 12 && copia != 13 && copia != 14 && copia != 15);
bin=(bin*10)+copia;
cout<<hex;
cin.get();
break;
}
cin.get();
cin.get();
}
pero no me sale ayudeme por favor
El programa debe contener:
- Una función que permita transformar el número ingresado por el usuario a la base que éste consulte.(parámetros por referencia)
- Una función que entregue el valor del complemento-2 para el caso que el número sea negativo.(parámetros por valor)
tengo esto
#include <iostream.h>
#include <stdio.h>
//void cbin (int &);
//para paso por referencia se maneja todo igual que con valor pero en el prototipo de funcion se coloca
// & luego de la variable y en la funcion que recibe se coloca de nuevo el & y ya.
//el cout es para imprimir
//cin para leer
//
void main()
{
int num,b,entero;
cout<<endl<<"Introduzca un numero:\n";
cin>>num;
if (num<0)
{
cout<<"num<-x";
}
else
{
cout<<"\nIntroduzca la base:\n";
cin>>b;
}
if ((b!=2)&&(b!=8)&&(b!=16))
cout<<"\nError: datos incorrectos\n";
else
cout<<"\nNumero convertido: ";
int copia=num;
int res,pot=1;
int bin=0,oct=0,hex=0;
switch(b)
{
case 2: do
{
res=copia%2;
if (res==0)
bin*=10;
else
bin+=(res*pot);
copia/=2;
pot*=10;
}while(copia !=0 && copia != 1);
bin=(bin*10)+copia;
cout<<bin;
break;
case 8: do
{
res=copia%8;
if (res==0)
bin*=10;
else
bin+=(res*pot);
copia/=2;
pot*=10;
}while(copia !=0 && copia != 1 && copia != 2 && copia !=3 && copia != 4 && copia != 5 && copia != 6 && copia != 7);
bin=(bin*10)+copia;
cout<<oct;
cin.get();
break;
case 16: do
{
res=copia%16;
if (res==0)
bin*=10;
else
bin+=(res*pot);
copia/=2;
pot*=10;
}while(copia !=0 && copia != 1 && copia != 2 && copia !=3 && copia != 4 && copia != 5 && copia != 6 && copia != 7 && copia != 8 && copia != 9 && copia != 10 && copia != 11 && copia != 12 && copia != 13 && copia != 14 && copia != 15);
bin=(bin*10)+copia;
cout<<hex;
cin.get();
break;
}
cin.get();
cin.get();
}
pero no me sale ayudeme por favor