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 while para repetir o menu até a opção 0.
  • Usar switch para 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

  1. Declaramos opcao para armazenar a escolha do usuário.
  2. Usamos while (true) para repetir indefinidamente até que o return 0 seja executado.
  3. Dentro do loop, lemos opcao com std::cin >> opcao;.
  4. O switch compara opcao com cada case.
  5. No case 1, lemos dois inteiros, somamos e imprimimos. Usamos chaves {} para declarar variáveis locais sem conflito com outros casos.
  6. No case 2, fazemos a subtração.
  7. No case 0, imprimimos Saindo... e return 0 encerra o programa.
  8. O default trata 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 break em um case: o fluxo continua para o próximo caso (fallthrough), executando código indevido. Sempre use break ou return.
  • Declarar variáveis diretamente no case sem 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 0 ou uma flag, o while (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...