Considere que o trecho de código em C++ foi executado 2 vezes, sendo que na 1ª. execução o valor de entrada foi 10 e na 2ª. execução, o valor de entrada foi 5. Ao final das duas execuções, respectivamente, o que foi impresso na tela ? cout << "Digite um valor : "; cin >> z; switch(z) { case 5 : cout << 3 * z << " "; case 10 : cout << 11 /2 * z << " "; case 20 : cout << z * z - 10 << endl; break; default : cout << "Entrada invalida. " << endl; }
Respostas
respondido por:
26
cout << "Digite um valor : ";
cin >> z;
switch(z) {
case 5 :
cout << 3 * z << " ";
case 10 :
cout << 11 /2 * z << " ";
case 20 :
cout << z * z - 10 << endl;
break;
default :
cout << "Entrada invalida. " << endl;
}
QUando o usuário digita 10 a variável z assume o valor 10 na linha "cin >> z;"
Aí o programa encontra o switch(z),
Como o valor é 10, o programa salta para o case 10: e exibe
11/2 * 10 = 5 * 10 = 50
Porque 11/2 não deu 5.5 ?? porque todos os operandos nessa expressão são inteiro, então a divisão de 11/2 em inteiro é 5 e nao 5.5 (que é real)
5 * 10 = 50
Aí ele continua e faz o case 20: porque não tinha "break" no case 10:
z * z - 10 = 10 * 10 - 10 = 100 - 10 = 90
em seguida tem um break, o programa pula para o comando seguinte ao switch. Como tem comando nenhum, o programa para de rodar.
Portanto, a entrada 10 produz a saída 50 90
Quando o usuário digita 5 o programa cai no primeiro case 5: e executa o que tem nele
cout << 3 * z << " " :
isso é 3 * 5 = 15 ,e exibe 15
como não tem break, ele continua dentro do case e vai para o case 10:
cout << 11 /2 * z << " ";
novamente, 11/2 inteiro dá 5 (e não 5.5) que multiplicad por z que é 5 dá 5 * 5 = 25 e é isso que ele imprime
Não tem break no case 10: então ele segue para baixo e encontra o case 20:
cout << z * z - 10
5 * 5 - 10 = 25 -10 = 15 e é isso que ele imprime.
Portanto a resposta é
50 90 caso digite 10
e
15 25 15 caso digite 5
O objetivo desse exercício é demonstrar como o comando switch/case funciona.
Um erro comum é esquecer do break
cin >> z;
switch(z) {
case 5 :
cout << 3 * z << " ";
case 10 :
cout << 11 /2 * z << " ";
case 20 :
cout << z * z - 10 << endl;
break;
default :
cout << "Entrada invalida. " << endl;
}
QUando o usuário digita 10 a variável z assume o valor 10 na linha "cin >> z;"
Aí o programa encontra o switch(z),
Como o valor é 10, o programa salta para o case 10: e exibe
11/2 * 10 = 5 * 10 = 50
Porque 11/2 não deu 5.5 ?? porque todos os operandos nessa expressão são inteiro, então a divisão de 11/2 em inteiro é 5 e nao 5.5 (que é real)
5 * 10 = 50
Aí ele continua e faz o case 20: porque não tinha "break" no case 10:
z * z - 10 = 10 * 10 - 10 = 100 - 10 = 90
em seguida tem um break, o programa pula para o comando seguinte ao switch. Como tem comando nenhum, o programa para de rodar.
Portanto, a entrada 10 produz a saída 50 90
Quando o usuário digita 5 o programa cai no primeiro case 5: e executa o que tem nele
cout << 3 * z << " " :
isso é 3 * 5 = 15 ,e exibe 15
como não tem break, ele continua dentro do case e vai para o case 10:
cout << 11 /2 * z << " ";
novamente, 11/2 inteiro dá 5 (e não 5.5) que multiplicad por z que é 5 dá 5 * 5 = 25 e é isso que ele imprime
Não tem break no case 10: então ele segue para baixo e encontra o case 20:
cout << z * z - 10
5 * 5 - 10 = 25 -10 = 15 e é isso que ele imprime.
Portanto a resposta é
50 90 caso digite 10
e
15 25 15 caso digite 5
O objetivo desse exercício é demonstrar como o comando switch/case funciona.
Um erro comum é esquecer do break
Perguntas similares
6 anos atrás
6 anos atrás
6 anos atrás
8 anos atrás
8 anos atrás
8 anos atrás
9 anos atrás
9 anos atrás