Hola estoy teniendo problemas con este programa que me dejaron les agradeceira el apoyo
Publicado por Edgar (1 intervención) el 05/12/2015 00:32:59
Considere un entero positivo n que se escribe bmbm-1...b1b0 en binario, donde m ≥ 0 y bm = 1. El complemento de n es el entero que se escribe amam-1...a1a0 en binario, donde ai = 1 – bi para toda 0 ≤ i ≤ m. El reverso de n es el entero que se escribe b0b1...bm-1bm en binario. Escribe un programa que calcule el complemento p y el reverso q de un entero n. Por ejemplo, si n = 2006 (11111010110 en binario) entonces su complemento es p = 41 (00000101001 en binario) y su reverso es q = 863 (01101011111 en binario).
Entrada:
Un número entero n tal que 1 ≤ n ≤ 4,000,000,000.
Salida: Dos números enteros p, q separados por un espacio.
Ejemplo de salida 2006 41 863
aqui dejo lo que llevo de codigo les agradesco la ayuda
Entrada:
Un número entero n tal que 1 ≤ n ≤ 4,000,000,000.
Salida: Dos números enteros p, q separados por un espacio.
Ejemplo de salida 2006 41 863
aqui dejo lo que llevo de codigo les agradesco la 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
#include<stdio.h>
#include<windows.h>
main()
{
int normal=0,reverso=0,complemento=0;
int num=0,cont3=0,cont4=0,tam=0;
int arreglo[30],arreglo2[30],arreglo3[30];//El reverso se va a guardar en arreglo, el normal en arreglo2 y el complemento en arreglo3
printf("ingresa un numero:");
scanf("%d",&num);
for(int cont=0;;cont++)
{
if(num>1)
{
arreglo[cont]=num%2;
}
else if(num==1)
{
arreglo[cont]=num;
arreglo[cont+1]=-1;
break;
}
else if(num==0)
{
arreglo[cont]=num;
arreglo[cont+1]=-1;
break;
}
num=num/2;
}
printf("\nReverso :");
for(int cont2=0;;cont2++)//Reverso
{
if(arreglo[cont2]!=-1)
printf("%d",arreglo[cont2]);
else
{
cont3=cont2-1;
tam=cont2;
break;
}
}
printf("\nNormal :");
for(;cont3>=0;cont3--)//Normal
{
arreglo2[cont4]=arreglo[cont3];
if(arreglo2[cont4]==1)//este if else es para llenar el arreglo de complemento
arreglo3[cont4]=0;
else
arreglo3[cont4]=1;
printf("%d",arreglo2[cont4]);
cont4++;
}
fflush(stdin);
printf("\nComplemento:");
arreglo3[cont4]=-1;
for(int cont5=0;;cont5++)//complemento
{
if(arreglo3[cont5]!=-1)
printf("%d",arreglo3[cont5]);
else
break;
}
printf("\n");
/*arreglo[cont4]='\0';
arreglo2[cont4]='\0';
arreglo3[cont4]='\0';
normal= atoi(arreglo2);
reverso= atoi(arreglo);
complemento= atoi(arreglo3);
*/
system("pause");
}
Valora esta pregunta
0