quien me ayuda? soy novata

elena05
21 de Abril del 2006
necesito un programa en c++ que convierta de binario a decimal de decimal a binario de binario a octal de octal a binario de binario a hexadecimal de hexadecmal a binario.
me lo pide de la forma siguiente:
1)B-D
2)D-B
3)B-O
4)O-B
5)B-H
6)H-B



crisam
21 de Abril del 2006
// espero que esto te sirva
// hay una funcion que cambia de decimal a cualqueir base
// y otra que cambia de cualqueir base a decimal

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>

typedef char cadena[20];

void diezax(int , int, char* );
int xadiez(cadena ,int);

void main()
{

cadena numn;
int num,salir=0;
char op;

do{
salir =0;
clrscr();
printf("1 B-Dn");
printf("2 D-Bn");
printf("3 B-On");
printf("4 O-Bn");
printf("5 B-Hn");
printf("6 H-Bn");
printf("7 Salir");
printf("nn Opcion? ");
op = getch();
switch (op)
{
case '1':
printf("nnIngrese un numero binario ");
gets(numn);
num=xadiez(numn,2);
printf("en decimal es %d",num);
getch();
break;
case '2':
printf("nnIngrese un numero decimal ");
cin >>num;
diezax(num,2,numn);
printf("en binario es %s",numn);
getch();
break;
case '3':
printf("nnIngrese un numero binario ");
gets(numn);
num=xadiez(numn,2);
diezax(num,8,numn);
printf("en octal es %s",numn);
getch();
break;
case '4':
printf("nnIngrese un numero octal ");
gets(numn);
num=xadiez(numn,8);
diezax(num,2,numn);
printf("en binario es %s",numn);
getch();
break;
case '5':
printf("nnIngrese un numero binario ");
gets(numn);
num=xadiez(numn,2);
diezax(num,16,numn);
printf("en hexagesimal es %s",numn);
getch();
break;
case '6':
printf("nnIngrese un numero hexagesimal ");
gets(numn);
num=xadiez(numn,16);
diezax(num,2,numn);
printf("en binario es %s",numn);
getch();
break;
case '7':
salir=1;
}
}while(!salir);

}

void vuelta(cadena a)
{
cadena aux;
strcpy(aux,a);
int y=0;
for(int x=strlen(aux)-1;x>=0;x--)
a[y++] = aux[x];
}

char simbolo(int n)
{
switch (n)
{
case 0 : return '0';
case 1 : return '1';
case 2 : return '2';
case 3 : return '3';
case 4 : return '4';
case 5 : return '5';
case 6 : return '6';
case 7 : return '7';
case 8 : return '8';
case 9 : return '9';
case 10 : return 'A';
case 11 : return 'B';
case 12 : return 'C';
case 13 : return 'D';
case 14 : return 'E';
case 15 : return 'F';
default : return ' ';
}
}

int valor(char n)
{
switch (n)
{
case '0' : return 0;
case '1' : return 1;
case '2' : return 2;
case '3' : return 3;
case '4' : return 4;
case '5' : return 5;
case '6' : return 6;
case '7' : return 7;
case '8' : return 8;
case '9' : return 9;
case 'A' : return 10;
case 'B' : return 11;
case 'C' : return 12;
case 'D' : return 13;
case 'E' : return 14;
case 'F' : return 15;
default : return 0;
}
}


void diezax(int num, int base, char *numn)
{
int x=0,resto;
strcpy(numn,"");
do
{
resto = num % base;
numn[x]= simbolo(resto);
num = num / base;
x++;
}while(num >0);
numn[x]='';
vuelta(numn);

}

int elevado(int base,int expo)
{
if (expo==0)
return 1;
else
return base*elevado(base,expo-1);
}

int xadiez(cadena numn,int base)
{
cadena aux;
strcpy(aux,numn);
vuelta(aux);
int xx=0;
for(int x=0; x<strlen(aux);x++)
xx+=valor(aux[x]) * elevado(base,x);
return xx;
}

Arich2005
21 de Abril del 2006
Hola, quisiera saber si alguien me puede ayudar a resolver el siguiente ejercicio: Dadas las variables numericas N1 y N2 y el signo de la operacion (+ - / * ). Mientras OP no sea "f" aplicar la operacion elegida a N1 y N2. Tener en cuenta que la division por 0 es imposible. Y tengo otro: Ingresar una serie de numeros natirasles que termina con -1 e indicar cuantas veces se interrumple el orden ascendente y cuantos numeros hay en cada grupo ordenado.. Por favor si me pueden ayudar, se los agradeceria. saludos

carrod
21 de Abril del 2006
oe ese codigo q te enviaro esta hasta su ....si em escribes te puedo ayudar

bruiz47
21 de Abril del 2006
Quisiera me ayude por favor si hubiera una programación más sencilla para realizar las conversiones.

Gracias

Miguel L.
21 de Abril del 2006
//MIRA ESTE ES UN PROGRAMA Q CAMBIA DESDE CUALQUIER BASE A CUALQUIER OTRA BASE.. espero t sirva.. copia las funciones.. suerte
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <ctype.h>

//funciones
int numero();
int binario();
int base_3();
int base_4();
int base_5();
int base_6();
int base_7();
int base_8();
int base_9();
int base_10();
int base_11();
int base_12();
int base_13();
int base_14();
int base_15();
int base_16();
int base_17();
int base_18();
int base_19();
int base_20();
int base_21();
int base_22();
int base_23();
int base_24();
int base_25();
int base_26();
int base_27();
int base_28();
int base_29();
int base_30();
int base_31();
int base_32();

int control();
int control_2();
int resultado();
int controles();
int cambio_base();
//variables
int base; //BASE DE ORIGEN(FUNCIONES bases y bases_1)
long int base10_; //PARA RECOGER EL VALOR DE EL NUMERO INTRODUCIDO
int x; //PARA LA FUNCION CONTROL

int cont; //PARECE SER QUE NO TIENE UTILIDAD ESTA VARIABLE

int cociente15=0;
int y;

int v;
char s[100];
long int luis[80];
char pepe[80];
char mn;
long int m;
int inst=0;
char tu[100];
char te[100];
long int q;
int i;
int r=1;
int h;
long int j=0;
long int k;
long int juan[100];
long int maria[100];
long int op;
long int base1;
char base_final[100];
///fin variables
void main()
{
clrscr();
printf("Introduce la base de origen:");
gets(tu);
k=atol(tu);

printf("Introduce la base de destino:");
gets(te);
base1=atol(te);
printf("%ld",base1);
getche();
numero();
if(k==2)
{
clrscr();
printf("binario");
getche();
binario();
}
else
if(k==3)
{
clrscr();
printf("base 3");
getche();
base_3();
}
else
if(k==4)
{
clrscr();
printf("base 4");
getche();
base_4();
}
else
if(k==5)
{
clrscr();
printf("base 5");
getche();
base_5();
}
else
if(k==6)
{
clrscr();
printf("base 6");
getche();
base_6();
}
else
if(k==7)
{
clrscr();
printf("base 7");
getche();
base_7();
}
else
if(k==8)
{
clrscr();
printf("base 8");
getche();
base_8();
}
else
if(k==9)
{
clrscr();
printf("base 9");
getche();
base_9();
}
else
if(k==10)
{
clrscr();
printf("base 10");
getche();
base_10();
}
else
if(k==11)
{
clrscr();
printf("base 11");
getche();
base_11();
}
else
if(k==12)
{
clrscr();
printf("base 12");
getche();
base_12();
}
else
if(k==13)
{
clrscr();
printf("base 13");
getche();
base_13();
}
else
if(k==14)
{
clrscr();
printf("base 14");
getche();
base_14();
}
else
if(k==15)
{
clrscr();
printf("base 15");
getche();
base_15();
}
else
if(k==16)
{
clrscr();
printf("base 16");
getche();
base_16();
}
else
if(k==17)
{
clrscr();
printf("base 17");
getche();
base_17();
}
else
if(k==18)
{
clrscr();
printf("base 18");
getche();
base_18();
}
else
if(k==19)
{
clrscr();
printf("base 19");
getche();
base_19();
}
else
if(k==20)
{
clrscr();
printf("base 20");
getche();
base_20();
}
else
if(k==21)
{
clrscr();
printf("base 21");
getche();
base_21();
}
else
if(k==22)
{
clrscr();
printf("base 22");
getche();
base_22();
}
else
if(k==23)
{
clrscr();
printf("base 23");
getche();
base_23();
}
else
if(k==24)
{
clrscr();
printf("base 24");
getche();
base_24();
}
else
if(k==25)
{
clrscr();
printf("base 25");
getche();
base_25();
}
else
if(k==26)
{
clrscr();
printf("base 26");
getche();
base_26();
}
else
if(k==27)
{
clrscr();
printf("base 27");
getche();
base_27();
}
else
if(k==28)
{
clrscr();
printf("base 28");
getche();
base_28();
}
else
if(k==29)
{
clrscr();
printf("base 29");
getche();
base_29();
}
else
if(k==30)
{
clrscr();
printf("base 30");
getche();
base_30();
}
else
if(k==31)
{
clrscr();
printf("base 31");
getche();
base_31();
}
else
if(k==32)
{
clrscr();
printf("base 32");
getche();
base_32();
}
}

binario()
{
base=2;
if (base==2)
{
v=2;
y=2;
x=1;
j=27;
controles();
base10_=luis[0]*1+luis[1]*2+luis[2]*4+luis[3]*8+luis[4]*16+luis[5]*32+luis[6]*64+luis[7]*128+luis[8]*256+luis[9]*512+luis[10]*1024+luis[11]*2048+luis[12]*4096+luis[13]*8192+luis[14]*16384+luis[15]*32768+luis[16]*65536+luis[17]*131072+luis[18]*262144+luis[19]*524288+luis[20]*1048576+luis[21]*2097152+luis[22]*4194304+luis[23]*8388608+luis[24]*16777216+luis[25]*33554432+luis[26]*67108864;
resultado();
cambio_base();

}
}
base_3()
{
base=3;
if (base==3)
{
v=2;
y=3;
x=2;
j=17;
controles();
clrscr();
base10_=luis[0]*1+luis[1]*3+luis[2]*9+luis[3]*27+luis[4]*81+luis[5]*243+luis[6]*729+luis[7]*2187+luis[8]*6561+luis[9]*19683+luis[10]*59049+luis[11]*177147+luis[12]*531441+luis[13]*1594323+luis[14]*4782969+luis[15]*14348907+luis[16]*43046721;
resultado();
cambio_base();

}
}
base_4()
{
base=4;
if (base==4)
{
v=2;
y=4;
x=3;
j=14;
controles();
base10_=luis[0]*1+luis[1]*4+luis[2]*16+luis[3]*64+luis[4]*256+luis[5]*1024+luis[6]*4096+luis[7]*16384+luis[8]*65536+luis[9]*262144+luis[10]*1048576+luis[11]*4194304+luis[12]*16777216+luis[13]*67108864;
resultado();
cambio_base();

}

}
////comprobacion hasta base 4
base_5()
{

base=5;

if (base==5)
{
v=2;
y=5;
x=4;
j=12;
controles();

base10_=luis[0]*1+luis[1]*5+luis[2]*25+luis[3]*125+luis[4]*625+luis[5]*3125+luis[6]*15625+luis[7]*78125+luis[8]*390625+luis[9]*1953125+luis[10]*9765625+luis[11]*48828125;
resultado();
cambio_base();

}
}
base_6()
{
base=6;
if (base==6)
{
v=2;
y=6;
x=5;
j=11;
controles();
base10_=luis[0]*1+luis[1]*6+luis[2]*36+luis[3]*216+luis[4]*1296+luis[5]*7776+luis[6]*46656+luis[7]*279936+luis[8]*1679616+luis[9]*10077696+luis[10]*60466176;
resultado();
cambio_base();

}
}
base_7()
{
base=7;
if (base==7)
{
v=2;
y=7;
x=6;
j=10;
controles();
base10_=luis[0]*1+luis[1]*7+luis[2]*49+luis[3]*343+luis[4]*2401+luis[5]*16807+luis[6]*117649+luis[7]*823543+luis[8]*5764801+luis[9]*40353607;
resultado();
cambio_base();


}
}
base_8()
{
base=8;
if (base==8)
{
v=2;
y=8;
x=7;
j=9;
controles();
base10_=luis[0]*1+luis[1]*8+luis[2]*64+luis[3]*512+luis[4]*4096+luis[5]*32768+luis[6]*262144+luis[7]*2097152+luis[8]*16777216;
resultado();
cambio_base();
}
}
base_9()
{
base=9;
if (base==9)
{
v=2;
y=9;
x=8;
j=9;
controles();
base10_=luis[0]*1+luis[1]*9+luis[2]*81+luis[3]*729+luis[4]*6561+luis[5]*59049+luis[6]*531441+luis[7]*4782969+luis[8]*43046721;
resultado();
cambio_base();

}
}
base_10()
{
base=10;
if (base==10)
{
v=2;
y=10;
x=9;
j=9;
controles();
base10_=atol(pepe);
resultado();
cambio_base();

}
}

base_11() //A
{
base=11;
if (base==11)
{
v=2;
y=11;
x=10;
j=8;
controles();
base10_=luis[0]*1+luis[1]*11+luis[2]*121+luis[3]*1331+luis[4]*14641+luis[5]*161051+luis[6]*1771561+luis[7]*19487171;
resultado();
cambio_base();

}
}
base_12() //B
{
base=12;
if (base==12)
{
v=2;
y=12;
x=11;
j=8;
controles();
base10_=luis[0]*1+luis[1]*12+luis[2]*144+luis[3]*1728+luis[4]*20736+luis[5]*248832+luis[6]*2985984+luis[7]*35831808;
resultado();
cambio_base();

}
}
base_13() //C
{
base=13;
if (base==13)
{
v=2;
y=13;
x=12;
j=8;
controles();
base10_=luis[0]*1+luis[1]*13+luis[2]*169+luis[3]*2197+luis[4]*28561+luis[5]*371293+luis[6]*4826809+luis[7]*62748517;
resultado();
cambio_base();

}
}
base_14() //D
{
base=14;
if (base==14)
{
v=2;
y=14;
x=13;
j=7;
controles();
base10_=luis[0]*1+luis[1]*14+luis[2]*196+luis[3]*2744+luis[4]*38416+luis[5]*537824+luis[6]*7529536;
resultado();
cambio_base();

}
}
base_15() //E
{
base=15;
if (base==15)
{
v=2;
y=15;
x=14;
j=7;
controles();
base10_=luis[0]*1+luis[1]*15+luis[2]*225+luis[3]*3375+luis[4]*50625+luis[5]*759375+luis[6]*11390625;
resultado();
cambio_base();

}
}
base_16() //F
{
base=16;
if (base==16)
{
v=2;
y=16;
x=15;
j=7;
controles();
base10_=luis[0]*1+luis[1]*16+luis[2]*256+luis[3]*4096+luis[4]*65536+luis[5]*1048576+luis[6]*16888216;
resultado();
cambio_base();

}
}
base_17() //G
{
base=17;
if (base==17)
{
v=2;
y=17;
x=16;
j=7;
controles();
base10_=luis[0]*1+luis[1]*17+luis[2]*289+luis[3]*4913+luis[4]*83521+luis[5]*1419857+luis[6]*24137569;
resultado();
cambio_base();

}
}
base_18() //H
{
base=18;
if (base==18)
{
v=2;
y=18;
x=17;
j=7;
controles();
base10_=luis[0]*1+luis[1]*18+luis[2]*324+luis[3]*5862+luis[4]*104976+luis[5]*1889568+luis[6]*34012224;
resultado();
cambio_base();

}
}
base_19() //I
{
base=19;
if (base==19)
{
v=2;
y=19;
x=18;
j=7;
controles();
base10_=luis[0]*1+luis[1]*19+luis[2]*361+luis[3]*6859+luis[4]*130321+luis[5]*2476099+luis[6]*47045881;
resultado();
cambio_base();

}
}
base_20() //J
{
base=20;
if (base==20)
{
v=2;
y=20;
x=19;
j=7;
controles();
base10_=luis[0]*1+luis[1]*20+luis[2]*400+luis[3]*8000+luis[4]*160000+luis[5]*3200000+luis[6]*64000000;
resultado();
cambio_base();

}
}
base_21() //K
{
base=21;
if (base==21)
{
v=2;
y=21;
x=20;
j=7;
controles();
base10_=luis[0]*1+luis[1]*21+luis[2]*441+luis[3]*9261+luis[4]*194481+luis[5]*4084101+luis[6]*85766121;
resultado();
cambio_base();

}
}
base_22() //L
{
base=22;
if (base==22)
{
v=2;
y=22;
x=21;
j=6;
controles();
base10_=luis[0]*1+luis[1]*22+luis[2]*484+luis[3]*10648+luis[4]*234256+luis[5]*5153632;
resultado();
cambio_base();

}
}

base_23() //M
{
base=23;
if (base==23)
{
v=2;
y=23;
x=22;
j=6;
controles();
base10_=luis[0]*1+luis[1]*23+luis[2]*529+luis[3]*12167+luis[4]*279841+luis[5]*6436343;
resultado();
cambio_base();

}
}
base_24() //N
{
base=24;
if (base==24)
{
v=2;
y=24;
x=23;
j=6;
controles();
base10_=luis[0]*1+luis[1]*24+luis[2]*576+luis[3]*13824+luis[4]*331776+luis[5]*7962624; resultado();
cambio_base();

}
}
base_25() //O
{
base=25;
if (base==25)
{
v=2;
y=25;
x=24;
j=6;
controles();
base10_=luis[0]*1+luis[1]*25+luis[2]*625+luis[3]*15625+luis[4]*390625+luis[5]*9765625;
resultado();
cambio_base();

}
}
base_26() //P
{
base=26;
if (base==26)
{
v=2;
y=26;
x=25;
j=6;
controles();
base10_=luis[0]*1+luis[1]*26+luis[2]*676+luis[3]*17576+luis[4]*456976+luis[5]*11881376;
resultado();
cambio_base();

}
}
base_27() //Q
{
base=27;
if (base==27)
{
v=2;
y=27;
x=26;
j=6;
controles();
base10_=luis[0]*1+luis[1]*27+luis[2]*729+luis[3]*19683+luis[4]*531441+luis[5]*14348907;
resultado();
cambio_base();

}
}
base_28() //R
{
base=28;
if (base==28)
{
v=2;
y=28;
x=27;
j=6;
controles();
base10_=luis[0]*1+luis[1]*28+luis[2]*784+luis[3]*21952+luis[4]*614656+luis[5]*17210368;
resultado();
cambio_base();

}
}
base_29() //S
{
base=29;
if (base==29)
{
v=2;
y=29;
x=28;
j=6;
controles();
base10_=luis[0]*1+luis[1]*29+luis[2]*841+luis[3]*24389+luis[4]*707281+luis[5]*20511149;
resultado();
cambio_base();

}
}
base_30() //T
{
base=30;
if (base==30)
{
v=2;
y=30;
x=29;
j=6;
controles();
base10_=luis[0]*1+luis[1]*30+luis[2]*900+luis[3]*27000+luis[4]*810000+luis[5]*24300000;
resultado();
cambio_base();

}
}
base_31()
{
base=31;
if (base==31)
{
v=2;
y=31;
x=30;
j=6;
controles();
base10_=luis[0]*1+luis[1]*31+luis[2]*961+luis[3]*29791+luis[4]*923521+luis[5]*28629151;
resultado();
cambio_base();

}
}
base_32()
{
base=32;
if (base==32)
{
v=2;
y=32;
x=31;
j=6;
controles();
base10_=luis[0]*1+luis[1]*32+luis[2]*1024+luis[3]*32768+luis[4]*1048576+luis[5]*33554432;
resultado();
cambio_base();

}
}
controles()///INCLUYE LAS FUNCIONES CONTROL Y CONTROL_2
{
control_2();
for(m=0;m<cociente15;m++)
{
if(luis[m]>x)
{
control();
}
}

}

numero() ///PARA RECOGER EL NUMERO DE CUYA BASE QUEREMOS CALCULAR
{

///reinicializacion de variables
cont=0;
cociente15=0;
q=0;
for(i=0;i<100;i++)
{
luis[i]=0;
}
///reinicializacion por si se introduce un numero nuevo
printf("Introduce un numero:");
gets(pepe);

cont=strlen(pepe);
cociente15=cont;
cont--;
for(i=0;i<100;i++)
{
if ((pepe[i]=='A')||(pepe[i]=='B')||(pepe[i]=='C')||(pepe[i]=='D')||(pepe[i]=='E')||(pepe[i]=='F')||(pepe[i]=='G')||(pepe[i]=='H')||(pepe[i]=='I')||(pepe[i]=='J')||(pepe[i]=='K')||(pepe[i]=='L')||(pepe[i]=='M')||(pepe[i]=='N')||(pepe[i]=='O')||(pepe[i]=='P')||(pepe[i]=='Q')||(pepe[i]=='R')||(pepe[i]=='S')||(pepe[i]=='T')||(pepe[i]=='U')||(pepe[i]=='V'))
{
pepe[i]=pepe[i]-55;
q=pepe[i];
luis[cont]=q;
cont--;
}
else
{
s[0]=pepe[i];
q=atol(s);
luis[cont]=q;
cont--;

}
}

}




control() ///INDICA ERROR REFERENTE A LAS CIFRAS DEL NUMERO
{
clrscr();
printf("Error!!! En base %d no puedes introducir numeros que sean superiores a %d ",y,x);
getche();
clrscr();
exit(0);
}
control_2() ///INDICA ERROR REFERENTE A LA CANTIDAD DE CIFRAS
{
while(cociente15>j)
{
inst=inst+1;
if(inst==2)
{
clrscr();
printf("El numero que has introducido excede los caracteres permitidos");
getche();
printf("nnAdios");
getche();
exit(0);
}
printf("El numero que has introducido excede los caracteres permitidos.nTienes otra oportunidad.");
getche();
clrscr();
numero();
}
}
resultado() ///RESULTADO DE LA OPERACION EN BASE 10
{
clrscr();
printf("nn El resultado en base 10 es :%ld", base10_);
getche();
clrscr();
//exit(0);
}

cambio_base()
{
k=0;

juan[0]=base10_;
for(i=0;i<100;i++)
{
if(juan[i]>=base1)
{
juan[k+1]=juan[i]/base1;
maria[i]=juan[i]%base1;
if(maria[i]>9)
{
maria[i]=maria[i]+55;
}
k++;
}
}
if(juan[k]>9)
{
juan[k]=juan[k]+55;
}
if(juan[k]>9)
{
gotoxy(10,1);
printf("n%c",juan[k]);
//getche();
}
else
{
gotoxy(7,1);
printf("n%ld",juan[k]);
//getche();
}
// //for(i=0;i<k;i++)
for(i=k-1;i>-1;i--)
{
if(maria[i]>9)
{
gotoxy(r+1,2);
r++;
printf("%c",maria[i]);
//getche();
}
else
{
gotoxy(r+1,2);
r++;
printf("%ld",maria[i]);
//getche();

}
}
getche();
printf("nnFIN DEL NUMERO");
getche();
}