Dev - C++ - decimal a binario

   
Vista:

decimal a binario

Publicado por Ignacio A (1 intervención) el 09/10/2008 06:03:56
Hola a todos tengo un problema con un programa dado que me compila pero no me entrega ningun tipo de respuesta al momento de escribir la operacion porfa ayuda....

#include <stdio.h>
#include <stdlib.h>

int binarios (int n)
{
int a,b,c,d,e,f,g,x1,x2,x3,x4,x5,x6,x7;
b=1;
while(b<=1)
{

a=n%2;
x1=n/2;
b=x1%2;
x2=x1/2;
c=x2%2;
x3=x2/2;
d=x3%2;
x4=x3/2;
e=x4%2;
x5=x4/2;
f=x5%2;
x6=x5/2;
g=x6%2;
x7=x6/2;

}
return (a,b,c,d,e,f,g,n,x1,x2,x3,x4,x5,x6,x7);

}

main()
{

int n1,n2,n3,r1,r2,r3,x7,g,f,e,d,c,b,a;//variables por teclado (n1,n2), variables de salida (r1,r2,r3,n3)
int opcion; //variable para elegir opcion

printf(" ");
printf(" calculadora ");
printf("___________________________________________________________________________ ");


printf( "introdusca un numero dependiendo de la operacion que quieras realizar " );//opcion de ejecucion
printf( " precione [1] para sumar " );
printf( " precione [2] para restar " );
printf( " precione [3] para multiplicar " );
printf( " precione [4] para dividir " );
printf( " precione [0] para salir de calculadora " );
printf( "opcion : " );
scanf( "%d" , &opcion );


while (opcion>0)
{

switch (opcion)
{
case 1:printf("ingrese el primer numero: "); //ingreso de valores para calcular suma
scanf("%d",&n1);
printf("ingrese el segundo numero: ");
scanf("%d",&n2);
if (n1>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
if (n2>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
n3=n1+n2;//n3 es la suma de los dos numeros
r1=binarios(n1); //transformacion a binario
r2=binarios(n2);
r3=binarios(n3);//suma de numeros en binario
if (n3>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
printf("opcion: %d %d %d ",opcion,n1,n2);
printf("%d [b2] = %d ",n1,r1);
printf("%d [b2] = %d ",n2,r2);
printf("%d [b2] = %d ",n3,r3);
printf("%d + %d = %d ",n1,n2,n3);
}
}
};break;
case 2:printf("ingrese el primer numero: "); //ingreso de valores para calcular resta
scanf("%d",&n1);
printf("ingrese el segundo numero: ");
scanf("%d",&n2);

if (n1>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
if (n2>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{

n3=n1-n2;//n3 es la resta de los dos numeros
r1=binarios(n1); //transformacion a binario
r2=binarios(n2);
r3=binarios(n3);//resta de numeros en binario
if (n3>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
printf("opcion: %d %d %d ",opcion,n1,n2);
printf("%d [b2] = %d ",n1,r1);
printf("%d [b2] = %d ",n2,r2);
printf("%d [b2] = %d ",n3,r3);
printf("%d - %d = %d ",n1,n2,n3);
}
}
};break;

case 3:printf("ingrese el primer numero: "); //ingreso de valores para calcular multiplicacion
scanf("%d",&n1);
printf("ingrese el segundo numero: ");
scanf("%d",&n2);

if (n1>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
if (n2>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{

n3=n1*n2;//n3 es la multiplicacion de los dos numeros
r1=binarios(n1); //transformacion a binario
r2=binarios(n2);
r3=binarios(n3);//multiplicacion de numeros en binario

if (n3>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
printf("opcion: %d %d %d ",opcion,n1,n2);
printf("%d [b2] = %d ",n1,r1);
printf("%d [b2] = %d ",n2,r2);
printf("%d [b2] = %d ",n3,r3);
printf("%d * %d = %d ",n1,n2,n3);
}
}
};break;

case 4:printf("ingrese el primer numero: "); //ingreso de valores para calcular divicion
scanf("%d",&n1);
printf("ingrese el segundo numero: ");
scanf("%d",&n2);

if (n1>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
if (n2>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
if (n2==0)
{
printf("ERROR de overflow en el resultado ");
}
else
{

n3=n1/n2;//n3 es la divicion de los dos numeros
r1=binarios(n1); //transformacion a binario
r2=binarios(n2);
r3=binarios(n3);//division de numeros en binario

if (n3>255)
{
printf("ERROR de overflow en el resultado ");
}
else
{
printf("opcion: %d %d %d ",opcion,n1,n2);
printf("%d [b2] = %d ",n1,r1);
printf("%d [b2] = %d ",n2,r2);
printf("%d [b2] = %d ",n3,r3);
printf("%d / %d = %d ",n1,n2,n3);
}
}
}
};break;
}

printf( "Que desea hacer? " );//opcion de ejecucion
printf( " [1] : sumar " );
printf( " [2] : restar " );
printf( " [3] : multiplicar " );
printf( " [4] : dividir " );
printf( " [0] : apagar " );
printf( "opcion : " );
scanf( "%d" , &opcion );

}



printf("Fin del programa ");
system("pause");
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:decimal a binario

Publicado por AntonioG (46 intervenciones) el 09/10/2008 20:34:15
Hola,

No puedes regresar varios valores asi.

Mejor guarda el resultado en una cadena (char[]) o de menos en un arreglo de enteros. Aqui te lo pongo con arreglo de enteros (lo voy a hacxer al tanteo, no tengo un compilador ahorita):
int *binarios (int n)
{
int ent[14],b,i;
b=n;
i=0;
for(i=0;i<14;i++)
ent[i]=-1;//llenar ent[] con valores no validos para incializar
while((i<14)&&(b>0))
{
ent[i]=b%2;
b=b/2;
i++;
}
return (ent);
}

Bueno, asi te va a ir guardando en cada entrada de ent[] el numero binario, aunque lo debes imprimir al revez, o sea algo como asi:

int salida[14];

salida=binarios(17);
for(i=13;i>=0;i--)
if(salida[i]!=-1) printf("%d",salida[i]);

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:decimal a binario

Publicado por nelsimar (1 intervención) el 05/01/2009 16:17:02
hola a todo tengo una gran problema con lo numero binarios a decimar alguien que me esplique porfa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:decimal a binario

Publicado por allan martinez (1 intervención) el 28/05/2009 22:00:58
//otra forma de realizar la suma en binario es con esta funcion teniendo en cuenta el acarreo

void suma( vector <int> &temp , vector <int> &sumando )//suma dos vectores en binario
{
int acarreo = 0;
vector <int> resul(4,0);

resul.resize(temp.size());

for( int i=0 ; i<sumando.size() ; i++)
{
if( temp.at(i) && sumando.at(i) )
{
if( acarreo )
{
resul.at(i) = 1;
acarreo = 1;
}
else{
resul.at(i) = 0;
acarreo = 1;
}
}
else if( temp.at(i) || sumando.at(i) )
{
if( acarreo )
{
resul.at(i) = 0;
acarreo = 1;
}
else
resul.at(i) = 1;
}
else
{
if( acarreo )
{
resul.at(i) = 1;
acarreo = 0;
}
else
resul.at(i) = 0;
}
}
temp = resul;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

decimal a binario

Publicado por manuel_vzla manuelcastellano97@hotmail.com (51 intervenciones) el 27/09/2012 20:55:05
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include<stdio.h>
int main(void)
{
 
	int n;
	int bin;
	int j=0;
	int k;
 
	int n_tem;
	int n_temp=0;
	int n_temp1=0;
//	char n_tem2;
 
	scanf("%d",&n);
 
 
 
 
	//for(n=1;n<=256;n++){
		printf("binario:\n");
 
	for(bin=1;bin<=n;bin*=2)
		j=bin;
	for(j=bin;j>=1;j=(bin/=2)){
 
 
		for(j=bin;j>=1;j=(bin/=2))
		{
			n_tem=n;
			k=n_temp;
			n_temp=n_tem%j;
			if(n_tem>=j){
			n_temp1=k/j;
 
			printf("%d",n_temp1);
 
			}
 
		}
 
	}
		printf("\n");
	/*octal*/
		printf("octal\n");
	for(bin=1;bin<=n;bin*=8)
		j=bin;
	for(j=bin;j>=1;j=(bin/=8)){
 
 
		for(j=bin;j>=1;j=(bin/=8))
		{
			n_tem=n;
			k=n_temp;
			n_temp=n_tem%j;
			if(n_tem>=j){
			n_temp1=k/j;
			printf("%d",n_temp1);
			}
 
		}
		printf("\n");
 
 
		/*hexadecimal*/
			printf("hexadecimal\n");
		for(bin=1;bin<=n;bin*=16)
		j=bin;
	for(j=bin;j>=1;j=(bin/=16)){
 
 
		for(j=bin;j>=1;j=(bin/=16))
		{
			n_tem=n;
			k=n_temp;
			n_temp=n_tem%j;
 
			if(n_tem>=j){
			n_temp1=k/j;
 
 
			if(n_temp1==10){
				n_temp1='A';
				printf("%c",n_temp1);
			}
 
			if(n_temp1==11){
				n_temp1='B';
				printf("%c",n_temp1);
			}
 
 
			if(n_temp1==12){
				n_temp1='C';
					printf("%c",n_temp1);
			}
 
 
			if(n_temp1==13){
				n_temp1='D';
				printf("%c",n_temp1);
			}
 
			if(n_temp1==14){
				n_temp1='E';
				printf("%c",n_temp1);
			}
 
 
 
			if(n_temp1==15){
				n_temp1='F';
				printf("%c",n_temp1);
			}
			else if(n_temp1>=0 && n_temp1<=9)
 
					printf("%d",n_temp1);
					}
				}
			printf("\n");
 
			}
 
		}
//	}
 
 
 
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

decimal a binario

Publicado por manuel_vzla manuelcastellano97@hotmail.com (51 intervenciones) el 27/09/2012 20:57:48
quizas tarde...pero ojala pueda ayudar...

este programa...convierte un numero decimal..a su base binario,octal,hexadecimal

utilizando las divisiones sucesivas entre los exponentes de las diversas bases de cada notacion..

es un buen programa...

sin arreglos....sin funciones...con repeticion..

saludos..desde venezuela
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar