Dev - C++ - ¿Por qué no ejecuta este programa?

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

¿Por qué no ejecuta este programa?

Publicado por Karim (2 intervenciones) el 28/01/2020 02:22:04
Hola, soy nuevo en esto de la programación, llevo 2 días aprendiendo. Estoy intentando crear una calculadora simple usando switch, pero no entiendo por qué no ejecuta. Muchas gracias
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
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

¿Por qué no ejecuta este programa?

Publicado por Thanatos (199 intervenciones) el 28/01/2020 05:10:23
* Las etiquetas case nos sirven para "saltar" de una sección de código a otra.
* En C++ no está permitido "saltarse" la declaración con inicialización de una variable.

Por ejemplo, si intentas compilar este código, el compilador también te mostrará un error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main() {
    int opcion = 2;
 
    switch (opcion) {
        case 1:
            int resp = 1;
            break;
        case 2:
            cout << "Hola\n";
            break;
        default:
            break;
    }
 
    return 0;
}

En el ejemplo el valor de opcion es 2, por esto tendría que ejecutarse el código del case 2 mostrando Hola en la consola. El problema es que para hacer eso, la ejecución del programa tendría que "saltarse" el código del case 1, donde se encuentra la declaración con inicialización de la variable resp. Ese intento de "saltar" sobre la línea 10 del ejemplo es lo que genera el error.

Si modificas el código del switch en tu programa, de una de estas maneras, evitarás el error de compilación:

1. Encerrando entre llaves el código de los cases:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
switch(op) {
    case 1: {
        float res1 = x + y;
        cout << "The result of the operation is: " << res1;
    }
    break;
    case 2: {
        float res2 = x - y;
        cout << "The result of the operation is: " << res2;
    }
    break;
    case 3: {
        float res3 = x * y;
        cout << "The result of the operation is: " << res3;
    }
    break;
    case 4: {
        float res4 = x / y;
        cout << "The result of the operation is: " << res4;
    }
    break;
}

2. Declarando e inicializando las variables en líneas diferentes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
switch(op) {
    case 1:
        float res1;
        res1 = x + y;
        cout << "The result of the operation is: " << res1;
        break;
    case 2:
        float res2;
        res2 = x - y;
        cout << "The result of the operation is: " << res2;
        break;
    case 3:
        float res3;
        res3 = x * y;
        cout << "The result of the operation is: " << res3;
        break;
    case 4:
        float res4;
        res4 = x / y;
        cout << "The result of the operation is: " << res4;
        break;
}


3. Declarando la variable que almacenará la respuesta de las operaciones antes del switch y reutilizándola dentro de cada case:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
float res;
 
switch(op) {
    case 1:
        res = x + y;
        cout << "The result of the operation is: " << res;
        break;
    case 2:
        res = x - y;
        cout << "The result of the operation is: " << res;
        break;
    case 3:
        res = x * y;
        cout << "The result of the operation is: " << res;
        break;
    case 4:
        res = x / y;
        cout << "The result of the operation is: " << res;
        break;
}


4. Realizando las operaciónes directamente en las líneas que muestran los resultados:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch(op) {
    case 1:
        cout << "The result of the operation is: " << x + y << '\n';
        break;
    case 2:
        cout << "The result of the operation is: " << x - y << '\n';
        break;
    case 3:
        cout << "The result of the operation is: " << x * y << '\n';
        break;
    case 4:
        cout << "The result of the operation is: " << x / y << '\n';
        break;
}
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 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

¿Por qué no ejecuta este programa?

Publicado por Karim (2 intervenciones) el 29/01/2020 00:47:17
¡Gracias por tan clara explicación!
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