Quero criar um loop em um menu de opções, de modo que o mesmo se repita quando a respota for 1. Como faço?
{
int escolha;
int sim;
do {
printf("Confidencial.\n");
printf("Digite [1] para confidencial.\n");
printf("Digite [2] para confidencial.\n");
scanf("%d", &escolha);
sim= 0;
switch (escolha)
{
case 1:
printf("Condfidencial.\n");
break;
case 2:
printf("Confidencial.\n");
break;
default:
printf("Invalid option.\n");
break;
sim= 1;
}
} while (sim);
}
Da maneira como está, ele está repetindo quando a resposta é inválida, e quero que ele se repita quando a resposta for 1.
Respostas
Resposta:
No caso, você teria que mudar a condição do while.
Esse "sim" não faz sentido, então ele entra em um loop infinito quando você digitar um caso diferente de 1 ou 2, que são os cases existentes do switch.
Se você só quer realmente fazer ele repetir o menu quando digitar 1, você tem que colocar ele como condição no while:
while (escolha == 1)
ou seja,
Repetir o processo enquanto a resposta do usuário for igual a 1.
Agora se você quiser repetir o loop enquanto a resposta for "sim", é um caso diferente, onde precisaríamos utilizar strings e suas funções.
Código:
int main(){
int escolha;
do{
printf("Confidencial.\n");
printf("Digite [1] para confidencial.\n");
printf("Digite [2] para confidencial.\n");
scanf("%d", &escolha);
switch (escolha){
case 1:
printf("Condfidencial.\n");
break;
case 2:
printf("Confidencial.\n");
break;
default:
printf("Invalid option.\n");
break;
}
}while(escolha == 1);
return 0;
}