Dev - C++ - ayuda con un codigo de binario a decimal

 
Vista:

ayuda con un codigo de binario a decimal

Publicado por siegfrido Garcia (22 intervenciones) el 18/03/2020 19:40:56
estoy asiendo un código que convierta de decimal a binario y viceversa pero lo tengo que hacer sin estructura de control ya tengo echo lo de decimal a binario pero no logro hacer el de binario a decimal asi que bine a pedir asesoría a ver si alguien me podría ayudar

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
#include<iostream>
using namespace std;
 
void menu();
void hola();
 
int main()
{
    int a,n1,n2;
 
    cout<<"1.Decimal a Binario"<<endl;
    cout<<"2.Binario a Decimal"<<endl;
 
    cin>>a;
 
    (a == 1 )? menu() : hola()  ;
 
 
 
 
return 0;
}
 
void menu(){
 
  int D = 0 ,D1 = 0,D2 = 0,D3 = 0,D4 = 0,D5 = 0,D6 = 0,D7 = 0,D8 = 0,R1  = 0,R2 = 0,R3 = 0,R4 = 0,R5 = 0,R6 = 0,R7 = 0,R8 = 0;
    cout<<"Ingrese un numero decimal"<<endl;
    cin>>D;
 
    D1= D/2; R1=D%2;
    D2=D1/2; R2=D1%2;
    D3=D2/2; R3=D2%2;
    D4=D3/2; R4=D3%2;
    D5=D4/2; R5=D4%2;
    D6=D5/2; R6=D5%2;
    D7=D6/2; R7=D6%2;
    D8=D7/2; R8=D7%2;
 
    cout<<R8<<R7<<R6<<R5<<R4<<R3<<R2<<R1<<endl;
 
}
 
void hola(){
 
    cout<<"Ingrese un numero binario"<<endl;
    cin>>B;
 
}
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
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con un codigo de binario a decimal

Publicado por Alfil (1444 intervenciones) el 19/03/2020 00:10:22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void binarioDecimal()
{
    int B, suma = 0;
 
    cout << "Ingrese un numero binario: ";
    cin >> B;
 
    int bin = B;
 
    suma += B > 0 ? (B % 10) * 1 : 0; B /= 10;
    suma += B > 0 ? (B % 10) * 2 : 0; B /= 10;
    suma += B > 0 ? (B % 10) * 4 : 0; B /= 10;
    suma += B > 0 ? (B % 10) * 8 : 0; B /= 10;
    suma += B > 0 ? (B % 10) * 16 : 0; B /= 10;
    suma += B > 0 ? (B % 10) * 32 : 0; B /= 10;
    suma += B > 0 ? (B % 10) * 64 : 0; B /= 10;
    suma += B > 0 ? (B % 10) * 128 : 0; B /= 10;
    suma += B > 0 ? (B % 10) * 256 : 0; B /= 10;
 
    cout << "\n" << bin << " en decimal es " << suma << endl;
}
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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con un codigo de binario a decimal

Publicado por Rodrigo (539 intervenciones) el 19/03/2020 07:04:45
Si puedes usar recursion podrias resolverlo solo usando el operador ?: , por ejemplo asi:

1
2
3
4
// binario es un entero positivo solo formado con 0's.y 1's.
int aDecimal(int binario) {
  return binario >= 2 ? aDecimal(binario/10) * 2 + binario % 10 : binario;
}
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

ayuda con un codigo de binario a decimal

Publicado por siegfrido Garcia (22 intervenciones) el 19/03/2020 21:37:43
gracias una pregunta como podría mejorar el de Decimal a binario porque aveces falla
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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con un codigo de binario a decimal

Publicado por Rodrigo (539 intervenciones) el 19/03/2020 23:40:02
Es una pregunta muy amplia, sugiero poner exactamente ejemplos de entradas y salidas esperadas. "A veces falla" es muy amplio.
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
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con un codigo de binario a decimal

Publicado por Alfil (1444 intervenciones) el 19/03/2020 23:57:13
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
#include <iostream>
#include <string>
 
using namespace std;
 
void menu();
int aDecimal(int binario);
string aBinario (int decimal, string binario);
 
int main()
{
    char opcion;
    int numero;
    string binario;
 
    do {
        menu();
        cin >> opcion;
 
        switch (opcion)
        {
            case '1':
                cout << "\nNumero: "; cin >> numero;
                binario = aBinario(numero, "");
 
                cout << "\n" << numero << " en binario es ";
                for (int i = binario.size(); i >= 0; --i)
                    cout << binario[i];
 
                cout << endl;
                break;
 
            case '2':
                cout << "\nNumero: "; cin >> numero;
                cout << "\n" << numero << " en decimal es " << aDecimal(numero) << endl;
                break;
 
            case '3':
                cout << "\nFIN DEL PROGRAMA" << endl;
                break;
 
            default:
                cout << "\nOPCION NO VALIDA" << endl;
        }
 
    } while (opcion != '3');
 
    return EXIT_SUCCESS;
}
 
void menu()
{
    cout << "\n           MENU"
         << "\n================================"
         << "\n1.- De Decimal a Binario ... [1]"
         << "\n2.- De Binario a Decimal ... [2]"
         << "\n3.- Salir .................. [3]"
         << "\n================================"
         << "\nOPCION (1-3): ";
}
 
int aDecimal(int binario)
{
    return binario >= 2 ? aDecimal(binario/10) * 2 + binario % 10 : binario;
}
 
string aBinario(int decimal, string binario)
{
    binario += to_string(decimal % 2);
    decimal /= 2;
 
    return (decimal >= 1) ? aBinario(decimal, binario) : binario;
}
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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con un codigo de binario a decimal

Publicado por Rodrigo (539 intervenciones) el 20/03/2020 00:50:27
Aunque la representacion como int tiene muchas limitaciones, aqui va una:

1
2
3
int aBinario(int decimal) {
    return decimal > 1 ? aBinario(decimal/2) * 10 + aBinario(decimal%2) : decimal;
}
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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda con un codigo de binario a decimal

Publicado por Rodrigo (539 intervenciones) el 20/03/2020 04:56:26
Y la version que devuelve un string podria reducirse a:

1
2
3
string aBinario(int decimal) {
    return decimal > 1 ? aBinario(decimal/2) + to_string(decimal%2) : to_string(decimal);
}
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