Informática, perguntado por nascimentoelain9080, 1 ano atrás

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; }

Soluções para a tarefa

Respondido por bokomoko
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

Perguntas interessantes