Dev - C++ - Ayuda con Switch/Case C++

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con Switch/Case C++

Publicado por Jose Manuel (2 intervenciones) el 01/03/2019 08:18:22
Me dejaron una tarea donde me piden realizar las conversiones entre varios tipos de unidades. Commence a elaborar los menus para poder seleccionar que tipo de unidad se convertira a cual (Los menus supongo que es lo mas complicado ya que las operaciones son relativamente sencillas)
Despues de algunas horas de trabajo me quede atascado, el menu funciona a medias, tiene un error que no logro encontrar. El codigo es el siguiente:
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
#include "stdafx.h"
#include "iostream"
#include "string"
 
namespace moneda {
	int  codigo_operacion() {
		int codigo = 0, con, op2;
		using namespace std; {//Submenu Monedas
			cout << "Seleccione el tipo de moneda a convertir: \n1. Euros\n2. Pesos\n3. Dolares\n";
			cin >> op2;
			switch (op2)
			{
			case 1: {//Submenu Euros
				cout << "Seleccione a que tipo de moneda desea convertir los Euros:\n
                                              1. Pesos\n2. Dolares\n";
				cin >> con;
				if (con == 1)
					codigo = 0;
				else
					codigo = 1;
				break;
			}
 
			case 2: {//Submenu Pesos
				cout << "Seleccione a que tipo de moneda desea convertir los Pesos:\n
                               1. Euros\n2. Dolares\n";
				cin >> con;
				if (con == 1) {
					codigo = 2;
				}
 
				if (con == 2) {
					codigo = 3;
				}
				break;
			}
			case 3: {//Submenu Dolares
				cout << "Seleccione a que tipo de moneda desea convertir los Dolares:\n
                                  1. Euros\n2. Pesos\n";
				cin >> con;
				if (con == 1) {
					codigo = 4;
				}
 
				if (con == 2) {
					codigo = 5;
				}
				break;
			}
			}
		}
		return codigo;
	}
}
 
 
 
int main()
{
	int code, op = 0;
	using namespace std;
	cout << "Bienvenido al sistema de conversion de unidades\n \n Seleccione una Clasificacion:\n";
	cout << "1. Monedas\n2. Distancias\n3. Temperatura\n4. Salir\n";
	cin >> op;
 
	do {
		switch (op)
		{
		case 1: {//Moneda
			moneda::codigo_operacion();
			code = moneda::codigo_operacion();
 
			cout << "El codigo de operacion es " << code << "\n";
			break;
                        }
		}
	} while (op != 4);
	return 0;
}
Lo que sucede es que al momento de entrar al "submenu monedas" el case se tiene que repetir 2 veces para que el codigo de la operacion llegue al Main, ya le he dado muchas vueltas al codigo y no veo el error. Gracias de antemano.
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 Switch/Case C++

Publicado por Alfil (1444 intervenciones) el 01/03/2019 11:42:30
Trata de terminarlo

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
#include <iostream>
 
using namespace std;
 
int OpMenu();
void OpSubmenuMonedas();
 
int main(){
 
    int opcion;
 
    do{
        opcion = OpMenu();
 
        switch( opcion ){
            case 1:
                OpSubmenuMonedas();
                break;
            case 2:
 
                break;
            case 3:
 
                break;
            default:
                break;
        }
    }while( opcion != 4 );
 
}
 
int OpMenu(){
 
    int op;
 
    do{
        cout << "\n"
             << "     CONVERSION DE UNIDADES\n"
             << "===============================\n"
             << "1.- Monedas ......... (Pulsa 1)\n"
             << "2.- Distancia ....... (Pulsa 2)\n"
             << "3.- Temperatura ..... (Pulsa 3)\n"
             << "4.- Salir ........... (Pulsa 4)\n"
             << "===============================\n"
             << "INTRODUZCA UNA OPCION (1-4): ";
        cin >> op;
 
        if( cin.fail() || cin.bad() ){
            op = 0;
            cin.clear();
            cin.ignore(80, '\n');
        }
 
    }while( op < 1 || op > 4 );
 
    return op;
}
 
void OpSubmenuMonedas(){
 
int op;
 
    do{
        cout << "\n"
             << "     CONVERSION DE MONEDAS\n"
             << "===============================\n"
             << "1.- Euros a Pesos ... (Pulsa 1)\n"
             << "2.- Dolares a Pesos . (Pulsa 2)\n"
             << "3.- Pesos a Euros ... (Pulsa 3)\n"
             << "4.- Pesos a Dolares . (Pulsa 4)\n"
             << "5.- Cancelar ........ (Pulsa 5)\n"
             << "===============================\n"
             << "INTRODUZCA UNA OPCION (1-5): ";
        cin >> op;
 
        if( cin.fail() || cin.bad() ){
            op = 0;
            cin.clear();
            cin.ignore(80, '\n');
        }
 
        switch( op ){
            case 1:
                cout << "\nDe Euros a Pesos\n";
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            default:
                break;
            }
 
    }while( op != 5 );
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 4
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con Switch/Case C++

Publicado por Jose Manuel (2 intervenciones) el 02/03/2019 00:43:27
Ya lo hice, en cuanto deje apague mi computadora y me recosté me di cuenta de mi error de novato jajaja, gracias igualmente.
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