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....

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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
#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 (28 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):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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:

1
2
3
4
5
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
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
//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
sin imagen de perfil
Val: 46
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

decimal a binario

Publicado por manuel_vzla (62 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
sin imagen de perfil
Val: 46
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

decimal a binario

Publicado por manuel_vzla (62 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