Médio C++
Menu com switch e repetição
Enunciado
Implemente um menu que exibe opções e lê a escolha do usuário até que ele digite 0 para sair. Use while para repetir e switch para tratar cada opção. As opções são: 1 - Somar, 2 - Subtrair, 0 - Sair. Para as opções 1 e 2, leia dois números e mostre o resultado. Para opção inválida, mostre Opção inválida.
Requisitos
- Usar
whilepara repetir o menu até a opção 0. - Usar
switchpara tratar as opções 1, 2, 0 e default. - Ler dois números inteiros para as opções 1 e 2 e imprimir o resultado.
- Imprimir
Saindo...ao escolher 0.
Código inicial
#include <iostream>
int main() {
int opcao;
// Seu código aqui
return 0;
}
Saída esperada
1
10 5
15
2
10 3
7
0
Saindo...
Ver dica
Use while (true) e dentro dele leia a opção. No switch, não esqueça os break e o case 0 para sair do loop com return 0 ou break e uma flag.
Mostrar solução
#include <iostream>
int main() {
int opcao;
while (true) {
std::cin >> opcao;
switch (opcao) {
case 1: {
int a, b;
std::cin >> a >> b;
std::cout << a + b << '\n';
break;
}
case 2: {
int a, b;
std::cin >> a >> b;
std::cout << a - b << '\n';
break;
}
case 0:
std::cout << "Saindo...\n";
return 0;
default:
std::cout << "Opção inválida\n";
break;
}
}
return 0;
}
Passo a passo
- Declaramos
opcaopara armazenar a escolha do usuário. - Usamos
while (true)para repetir indefinidamente até que oreturn 0seja executado. - Dentro do loop, lemos
opcaocomstd::cin >> opcao;. - O
switchcomparaopcaocom cadacase. - No
case 1, lemos dois inteiros, somamos e imprimimos. Usamos chaves{}para declarar variáveis locais sem conflito com outros casos. - No
case 2, fazemos a subtração. - No
case 0, imprimimosSaindo...ereturn 0encerra o programa. - O
defaulttrata opções inválidas.
Por que funciona
O while (true) cria um loop infinito controlado por return dentro do switch. O switch é ideal para selecionar entre múltiplos valores discretos, e o default captura entradas inesperadas. As chaves nos case permitem declarar variáveis locais sem que o compilador reclame de inicialização cruzada entre casos.
Erros comuns
- Esquecer o
breakem umcase: o fluxo continua para o próximo caso (fallthrough), executando código indevido. Sempre usebreakoureturn. - Declarar variáveis diretamente no
casesem chaves:case 1: int a, b;pode causar erro de compilação por cruzamento de inicialização. Use{ }ao redor do bloco. - Não tratar a saída do loop: sem
return 0ou uma flag, owhile (true)nunca termina.
Outra forma de resolver
Usar uma flag booleana:
bool sair = false;
while (!sair) {
std::cin >> opcao;
switch (opcao) {
case 0: sair = true; break;
// ...
}
}
É preferível quando há mais código após o loop.
Saída esperada
1
10 5
15
2
10 3
7
0
Saindo...