Dev - C++ - Hola estoy teniendo problemas con este programa que me dejaron les agradeceira el apoyo

 
Vista:

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

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder