Informática, perguntado por UltraPotatoes, 4 meses atrás

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.

Soluções para a tarefa

Respondido por gabrielstuchi22
1

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;

}

Anexos:

UltraPotatoes: MEU DEUS DO CÉU, MUITO OBRIGADO!
UltraPotatoes: Eternamente grato. ^o^
UltraPotatoes: AAAAAAAAAA MUITO OBRIGADO
gabrielstuchi22: Disponha. Qualquer dúvida pode me mandar um e-mail: gabrielstuchi22@gmail com
Perguntas interessantes