Do While C ++ does not enter the loop using getline in string

0

Good afternoon people, I have a problem with my code. When I ask if the user wants to repeat the program, it simply does not loop. I have already tried using the user as numeric information and it worked, but I need it to be in the form of String itself. Here is the code:

using namespace std;
main()
{

setlocale(LC_ALL,"Portuguese");

int senha,quest,inicio=0,total=0;
string usuario;

string usuarioProfessor="Professor"; //   <-------------- INFORME O USUÁRIO DO PROFESSOR
string usuarioAluno="Aluno"; //   <-------------- INFORME O USUÁRIO DO ALUNO
intsenhaProfessor=123; //   <-------------- INFORME A SENHA DO PROFESSOR

char Q1='A',Q2='B',Q3='C',Q4='D',Q5='E',Q6='E',Q7='D',Q8='C',Q9='B',Q10='A',R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,escolha;

do
{
system("cls");
cout<<"Por favor, digite o usuário e senha: (Para finalizar, digite Exit.)\n";
cout<<"Usuário: "; getline(cin,usuario); 
if (usuario=="Exit")
cout<<"Programa finalizado.\n";

else if (usuario==usuarioProfessor)
{
    cout<<"Senha: "; cin>>senha;

    if (senha==senhaProfessor)
    {
        cout<<"\n";
        cout<<"Por favor, informe o gabarito da prova:\n";

        cout<<"Questão 1: "; cin>>Q1;
        cout<<"Questão 2: "; cin>>Q2;
        cout<<"Questão 3: "; cin>>Q3;
        cout<<"Questão 4: "; cin>>Q4;
        cout<<"Questão 5: "; cin>>Q5;
        cout<<"Questão 6: "; cin>>Q6;
        cout<<"Questão 7: "; cin>>Q7;
        cout<<"Questão 8: "; cin>>Q8;
        cout<<"Questão 9: "; cin>>Q9;
        cout<<"Questão 10: "; cin>>Q10; 

        system("cls");

        cout<<"Aluno, por favor informe as respostas da prova:\n";

        cout<<"Questão 1: "; cin>>R1;
        if (R1==Q1)
        total++;
        cout<<"Questão 2: "; cin>>R2;
        if (R2==Q2)
        total++;
        cout<<"Questão 3: "; cin>>R3;
        if (R3==Q3)
        total++;
        cout<<"Questão 4: "; cin>>R4;
        if (R4==Q4)
        total++;
        cout<<"Questão 5: "; cin>>R5;
        if (R5==Q5)
        total++;
        cout<<"Questão 6: "; cin>>R6;
        if (R6==Q6)
        total++;
        cout<<"Questão 7: "; cin>>R7;
        if (R7==Q7)
        total++;
        cout<<"Questão 8: "; cin>>R8;
        if (R8==Q8)
        total++;
        cout<<"Questão 9: "; cin>>R9;
        if (R9==Q9)
        total++;
        cout<<"Questão 10: "; cin>>R10;
        if (R10==Q10)
        total++;

        cout<<"\n";
        cout<<"Sua nota é "<<total<<".";

        cout<<"\n\n";
        cout<<"Deseja repetir o programa?\n";
        cout<<"S - Sim\n";
        cout<<"N - Não\n";
        cin>>escolha;
    }

    else 
    cout<<"Senha inválida.\n";
}

else if (usuario==usuarioAluno)
{
    cout<<"\n";
    cout<<"Por favor, informe as respostas da prova:\n";

    cout<<"Questão 1: "; cin>>R1;
    if (R1==Q1)
    total++;
    cout<<"Questão 2: "; cin>>R2;
    if (R2==Q2)
    total++;
    cout<<"Questão 3: "; cin>>R3;
    if (R3==Q3)
    total++;
    cout<<"Questão 4: "; cin>>R4;
    if (R4==Q4)
    total++;
    cout<<"Questão 5: "; cin>>R5;
    if (R5==Q5)
    total++;
    cout<<"Questão 6: "; cin>>R6;
    if (R6==Q6)
    total++;
    cout<<"Questão 7: "; cin>>R7;
    if (R7==Q7)
    total++;
    cout<<"Questão 8: "; cin>>R8;
    if (R8==Q8)
    total++;
    cout<<"Questão 9: "; cin>>R9;
    if (R9==Q9)
    total++;
    cout<<"Questão 10: "; cin>>R10;
    if (R10==Q10)
    total++;

    cout<<"\n";
    cout<<"Sua nota é "<<total<<".";

    cout<<"\n\n";
    cout<<"Deseja repetir o programa?\n";
    cout<<"S - Sim\n";
    cout<<"N - Não\n";
    cin>>escolha;       
}

else 
{
    cout<<"Usuário ou senha inválido.\n";
    cout<<"\n\n";
    cout<<"Deseja repetir o programa?\n";
    cout<<"S - Sim\n";
    cout<<"N - Não\n";
    cin>>escolha;
}
}

while (escolha=='S');

}
    
asked by anonymous 02.05.2017 / 22:47

1 answer

1

Are you typing the answer in lowercase? If this is the case, the program only identifies whether it is a capital S or N. Try to do this:

while (escolha=='S' || escolha=='s');

This should accept both uppercase and lowercase answers

    
03.05.2017 / 06:09