QT - Problema en un Switch C++

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido 1 puesto en QT (en relación al último mes)
Gráfica de QT

Problema en un Switch C++

Publicado por Miguel Ángel (1 intervención) el 16/07/2019 18:53:20
Hola,

Hace poco empece a ver programación en mi universidad y me pusieron un trabajo en el que tenia que hacer un juego de preguntas, al realizarlo todo funciona bien, menos los Defaults de los switch que he creado(el default le dice al usuario que escribio una respuesta incorrecta y en teoria deberia dejarlo ingresar otra vez el número, pero lo que pasa esque cuando se ingresa un dato que no es númerico se salta los CIN que he ingresado, creando un bucle sin fin de defaults).

Este es mi código y adjunto un video mostrando el problema:


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
#include <QCoreApplication>
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int A=0;
int B=1;
int respuesta1,respuesta2,respuesta3;
 
int main() {
    while(B==1){
        if(A==0){
            system("cls || clear");
            cout<< "Bienvenido al juego de preguntas.\n"<<endl;
            cout<< "Primera pregunta, Simon Bolivar liberto a Colombia?\n"<<"1.Si\n"<<"2.No\n"<<endl;
            cin>> respuesta1;
            switch(respuesta1)
                {
                case 1:
                    cout<<"Correcto!\n"<<endl;
                    system("pause");
                    A=1;
                    break;
                case 2:
                    system("cls || clear");
                    cout<<"Perdiste,deseas volver a intentar?\n"<<endl<<"1.Si\n"<<"2.No\n"<<endl;
                    cin>>B;
                    A=0;
                    break;
                default:
                    system("cls || clear");
                    cout<<"Respuesta invalida, ingrese una opcion entre 1-2"<<endl;
                    system("pause");
                    break;
                 }
                }
        if(A==1)
        {
            system("cls || clear");
            cout<<"Segunda pregunta,Camilo Torres fue un guerrillero?\n"<<"1.Si\n"<<"2.No\n"<<endl;
            cin>> respuesta2;
            switch(respuesta2)
                {
                case 1:
                    cout<<"Correcto!\n"<<endl;
                    system("pause");
                    A=2;
                    break;
                case 2:
                    system("cls || clear");
                    cout<<"Perdiste,deseas volver a intentar?\n"<<endl<<"1.Si\n"<<"2.No\n"<<endl;
                    cin>>B;
                    A=0;
                    break;
                default:
                    system("cls || clear");
                    cout<<"Respuesta invalida, ingrese una opcion entre 1-2"<<endl;
                    system("pause");
                    break;
                }
        }
        if(A==2)
        {
            system("cls || clear");
            cout<<"Tercera pregunta,El Binomio de Oro es un grupo de musica vallenata?\n"<<"1.Si\n"<<"2.No\n"<<endl;
            cin>>respuesta3;
            switch(respuesta3)
            {
                case 1:
                    cout<<"Felicitaciones, Ganaste!"<<endl;
                    system("pause");
                    B=0;
                    break;
                case 2:
                    system("cls || clear");
                    cout<<"Perdiste,deseas volver a intentar?\n"<<endl<<"1.Si\n"<<"2.No\n"<<endl;
                    cin>>B;
                    A=0;
                    break;
                default:
                    system("cls || clear");
                    cout<<"Respuesta invalida, ingrese una opcion entre 1-2"<<endl;
                    system("pause");
                    break;
            }
        }
    }
return 0;
}


Agradeceria que me ayudaran!
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 Emanuel
Val: 11
Ha aumentado su posición en 4 puestos en QT (en relación al último mes)
Gráfica de QT

Problema en un Switch C++

Publicado por Emanuel (2 intervenciones) el 22/07/2019 01:38:42
El problema viene a ser que std::cin se bloquea al recibir un tipo de dato que no espera. Te paso un link para que lo leas. notas sobre entradas inválidas

Por cada entrada que el usuario realiza deberías manejar las entradas inválidas

Espero que te sirva, saludos
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