I am writing a program with many switch
cases, and I am getting this error:
cannot jump from switch statement to this case label
This error occurs in all case
s. Maybe a {
is missing? I don't know.
Some parts of the program are in Portuguese, but I don't think it will be a problem to understand.
This is the code:
#include <iostream>
#include <vector>
#include "veiculo.h"
#include "concessionaria.h"
int main() {
std::vector < concessionaria > concessionarias;
int o;
do {
std::cout << "1. Criar concessionária\n";
std::cout << "2. Selecionar concessionária\n";
std::cout << "0. Sair\n";
std::cin >> o;
switch (o) {
case 1:
std::string nomeConcessionaria, cnpjConcessionaria;
std::cout << "Nome da Concessionária: ";
std::cin >> nomeConcessionaria;
std::cout << "CNPJ da Concessionária: ";
std::cin >> cnpjConcessionaria;
concessionarias.emplace_back(nomeConcessionaria, cnpjConcessionaria);
break;
case 2:
if (concessionarias.empty()) {
std::cout << "Nenhuma concessionária criada.\n";
continue;
}
std::cout << "Concessionárias disponíveis:\n";
for (size_t i = 0; i < concessionarias.size(); ++i) {
std::cout << i + 1 << ". " << concessionarias[i].getNome() << "\n";
}
int escolha;
std::cout << "Escolha uma concessionária (1-" << concessionarias.size() << "): ";
std::cin >> escolha;
if (escolha >= 1 && escolha <= static_cast < int > (concessionarias.size())) {
concessionaria & concessionariaAtual = concessionarias[escolha - 1];
do {
std::cout << "1. Adicionar veículo\n";
std::cout << "2. Remover veículo\n";
std::cout << "0. Voltar para a seleção de concessionária\n";
std::cin >> o;
switch (o) {
case 1:
std::string marca, chassi;
int preco, ano;
std::cout << "\nEscolha o tipo de veículo:\n";
std::cout << "1. Automóvel\n";
std::cout << "2. Moto\n";
std::cout << "3. Caminhão\n";
std::cin >> o;
veiculo * novoVeiculo = nullptr;
switch (o) {
case 1:
std::string motor;
std::cout << "Informe a marca, o preço, o nº do chassi, o ano de fabricação e o tipo de motor:\n";
std::cin >> marca;
std::cin >> preco;
std::cin >> chassi;
std::cin >> ano;
std::cin >> motor;
novoVeiculo = new automovel(marca, preco, chassi, ano, motor);
break;
case 2:
std::string modelo;
std::cout << "Informe a marca, o preço, o nº do chassi, o ano de fabricação e o modelo:\n";
std::cin >> marca;
std::cin >> preco;
std::cin >> chassi;
std::cin >> ano;
std::cin >> modelo;
novoVeiculo = new moto(marca, preco, chassi, ano, modelo);
break;
case 3:
std::string carga;
std::cout << "Informe a marca, o preço, o nº do chassi, o ano de fabricação e o tipo de carga:\n";
std::cin >> marca;
std::cin >> preco;
std::cin >> chassi;
std::cin >> ano;
std::cin >> carga;
novoVeiculo = new caminhao(marca, preco, chassi, ano, carga);
break;
default:
std::cout << "Opção inválida!\n";
break;
}
if (novoVeiculo != nullptr) {
concessionariaAtual.adicionar(novoVeiculo);
}
break;
case 2:
std::string chassi_;
std::cout << "Digite o número do chassi do veículo a ser removido: ";
std::cin >> chassi_;
concessionariaAtual.remover(chassi_);
break;
case 0:
std::cout << "Voltando para a seleção de concessionária.\n";
break;
default:
std::cout << "Opção inválida!\n";
break;
}
} while (o != 0);
} else {
std::cout << "Escolha inválida!\n";
}
break;
case 0:
std::cout << "Encerrando o programa.\n";
break;
default:
std::cout << "Opção inválida!\n";
break;
}
} while (o != 0);
return 0;
}
I tried asking different AI bots for help, but it didn't work.
case
blocks, so you should surround those blocks with{ }
braces, eg:case 1: { ... break; }
int o = 1; // Example user input
. See how close you can get yourmain
function toint main() { int o = 1; /* Example user input */ switch (o) { case 1: case 2: } }
. (You will need more than just this, but how much more? Drop the red herrings and show only what is actually needed to produce the error.) See also minimal reproducible example.