Buscar

ESTRUTURAS DE REPETIÇÃO - PARTE 2

Prévia do material em texto

1.
		O que será impresso, após a execução do código, a seguir?
#include < iostream >
using namespace std;
int main()
{
for(int i=25;i>0;i=i-6) cout << i << " ";
system( "pause" );
}
	
	
	
	0 0 0 0 0
	
	
	12 5 10 7 13
	
	
	12 8 10 7 15
	
	
	10 5 0 13 7
	
	
	25 19 13 7 1
	
Explicação:
Analisando o trecho do programa :
for(int i = 25 ;i>0  ;i=i-6)
   cout << i << " ";
Façamos um teste de mesa :
 
	i
	 i > 0 ? 
	25
	sim
	19
	sim
	13
	 sim
	7
	 sim
	1
	 sim
	-5
	 não
TELA :
25  19  13  7  1
	
	
	
	 
		
	
		2.
		
Marque a opção correta.  Considere o trecho de programa feito abaixo em C++. O valor final de soma e o valor final de num, são respectivamente
 
int contador, num = 1, soma = 0;
for (contador = 1; contador <= 20; contador += 5) {
        soma = soma + num;
         num = num + 3;
   }
	
	
	
	 
22  e 10
	
	
	22  e  13
	
	
	 
12 e 10
 
	
	
	 
o valor de soma está indefinido e o valor de num é 10
	
	
	 
22 e 20
	
Explicação:
 
Analisando o trecho : 
int contador, num = 1, soma = 0;
for (contador = 1; contador <= 20; contador += 5) {
        soma = soma + num;
         num = num + 3;
   }
 
Fazendo teste de mesa :
	contador
	num
	soma
	contador <= 20
	1
	1
	0
	sim
	6
	4
	1
	sim
	11
	7
	5
	sim
	16
	10
	12
	sim
	21
	13
	22
	21 <= 20 ? Falso.
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
Os valores finais das variáveis estão em vermelho.
Logo, a resposta é 22  e  13
	
	
	
	 
		
	
		3.
		As estruturas de repetição permitem executar mais de uma vez um mesmo trecho de código. Trata-se de uma forma de executar blocos de comandos somente sob determinadas condições, mas com a opção de repetir o mesmo bloco quantas vezes forem necessárias. As estruturas de repetição são úteis, por exemplo, para repetir uma série de operações semelhantes que são executadas para todos os elementos de uma lista ou de uma tabela de dados, ou simplesmente para repetir um mesmo processamento até que uma certa condição seja satisfeita. Sejam as seguintes afirmativas:
I - Toda estrutura de repetição apresenta um teste no início e um na saída.
II - Toda estrutura de repetição pode ser substituída por um conjunto de estruturas de decisão, onde não haja testes ou condições.
III - Toda estrutura de repetição apresenta um critério de parada.
IV- Toda estrutura de repetição apresenta fluxo de execução invertido devido a diversas iterações.
 
Marque a alternativa que representa apenas as afirmativas CORRETAS:
	
	
	
	I e IV
	
	
	III
	
	
	I
	
	
	I e III
	
	
	II, III e IV
	
Explicação:
I -  Toda estrutura de repetição apresenta um teste no início e um na saída.   Falso.  Ou no início ou no fim.
II - Toda estrutura de repetição pode ser substituída por um conjunto de estruturas de decisão, onde não haja testes ou condições.
      Falso.  São estruturas diferentes.
III - Toda estrutura de repetição apresenta um critério de parada.  Verdadeiro.
IV- Toda estrutura de repetição apresenta fluxo de execução invertido devido a diversas iterações.  Falso.
	
	
	
	 
		
	
		4.
		Leia atentamente o trecho de código abaixo e diga o que ele retornaria ao usuário:
int main ( ) {
    int i = 0;
    double x, y = 0;
    cout << "Digite um numero: ";
    cin >> x;
    while (x != 0){
        i = i + 1;
        y = y + x;
        cout << "Digite um numero: ";
        cin >> x;
    }
    y = y / i;
    cout << "Numero: " << y << "\n";
    system("PAUSE");
    return 0;
}
	
	
	
	A quantidade de elementos pares
	
	
	A quantidade de elementos digitados
	
	
	O menor de todos os elementos digitados
	
	
	A média dos elementos digitados
	
	
	O maior de todos os elementos digitados
	
Explicação:
 int i = 0;         //inicializa a quantidade de elementos digitados diferentes de zero
 double x, y = 0;          // y inicializa o somatorio dos valores de entrada
    cout << "Digite um numero: ";
    cin >> x;   //Lê o primeiro valor
    while (x != 0){      //Enquanto o valor de entrada não for zero
        i = i + 1;          //conta mais um número lido
        y = y + x;        //acumula o valor de x em y, gerando o somatório dos números lidos e armazenados em x
        cout << "Digite um numero: ";
        cin >> x;   //Lê o proóximo número
    }
    y = y / i;         //Divide a soma dos números lidos não nulos por i  ( i é o total de números lidos não nulos)
    cout << "Numero: " << y << "\n";   //Imprime a média armazenada em y
Logo : O programa calcula a média dos números digitados (diferente de zero)
	
	
	
	 
		
	
		5.
		Imagine que você precisa escrever um programa em C++ que receba o sexo de 100 pessoas (F para Feminino ou M para Masculino). Ao final da leitura dos sexos, o programa precisa exibir as seguintes informações: quantidade de mulheres, quantidade de homens, percentual de mulheres e percentual de homens.
Observações: 1. O programa deve funcionar com "F" e "M" maiúsculos ou minúsculos; 2. A estrutura de repetição a ser utilizada deve ser FOR.
Sabendo disso, qual seria o trecho de repetição adequado para esse programa?
	
	
	
	for (int cont=1;cont>=100;cont--) {
  cout <<"Qual o sexo? ";
  cin >>sexo;
  if (sexo==F && sexo==f)
  { qtdeF++; }
  else if (sexo==M || sexo==m)
  { qtdeM++; }
}
	
	
	for (int cont=1;cont<=100;cont++) {
  cout <<"Qual o sexo? ";
  cin >>sexo;
  if (sexo==F || sexo==f)
  { qtdeF++; }
  else if (sexo==M || sexo==m)
  { qtdeM++; }
}
	
	
	for (int cont=1;cont>=100;cont--) {
  cout <<"Qual o sexo? ";
  if (sexo==F && sexo==f)
  { qtdeF++; }
  else if (sexo==M &&| sexo==m)
  { qtdeM++; }
}
	
	
	for (int cont=1;cont<=100;cont++) {
  cin <<"Qual o sexo? ";
  cout >>qtdeF;
  if (sexo==F && sexo==f)
  { qtdeF++; }
  else if (sexo==M || sexo==m)
  { qtdeM++; }
}
	
	
	for (int cont=1;cont<=100;cont++) {
  cout <<"Qual o sexo? ";
  cin >>qtdeF;
  if (sexo==F && sexo==f)
  { qtdeF--; }
  else if (sexo==M || sexo==m)
  { qtdeM--; }
}
	
	
	
	 
		
	
		6.
		O que o trecho de programa em C++ abaixo imprime na tela ?
   int x;
   for (x = 5; x > 0; x--)
     if (x % 3 == 0)
        cout << x - 1 << " ";
     else
        cout << x + 1 << " ";
 
 
	
	
	
	5 6 3 2 1
 
	
	
	5 4 3 2 1
 
	
	
	6 5 3 2 1
 
	
	
	6 5 2 3 2
 
	
	
	6 5 2 3 1
 
	
Explicação:
  int x;
   for (x = 5; x > 0; x--)
     if (x % 3 == 0)
        cout << x - 1 << " ";
     else
        cout << x + 1 << " ";
 
Analisando o trecho dado e fazendo teste de mesa :
	x
	x > 0 ? 
	(x % 3 == 0) ? 
	5
	5 > 0 ? sim
	 5 % 3 é zero ? Não. Imprime 6
	4
	4 > 0 ? sim 
	4 % 3 é zero ? não. Imprime 5
	3
	 3 > 0 ? Sim
	3 % 3 é zero ? sim. Imprime 2
	2
	 2 > 0 ? sim
	 2 % 3 é zero ? não. Imprime 3
	1
	 1 > 0 ? sim 
	 1 % 3 é zero ? não. Imprime 2
	 0
	 0 > 0 ? não
	 
TELA 
6    5    2   3   2
	
	
	
	 
		
	
		7.
		Após a execução do trecho de código, abaixo, quais números serão exibidos na tela?
for(int i=3; i<100; i=i+19)
cout << " " << i;
	
	
	
	3 22 41 60 79 99
	
	
	3 22 41 60 79 98
	
	
	3 22 41 59 79 98
	
	
	3 23 42 61 80 99
	
	
	3 23 40 60 79 98
	
Explicação:
Considerando o trecho 
for(int i  =  3; i<100;  i = i+19) 
    cout << " " << i;
fazendo passo a passo :
	i
	 i < 100 ? 
	3
	 3 < 100 ? Sim
	3+ 19 é 22
	22  < 100 ? Sim
	22+ 19 é 41
	41 < 100  ? Sim
	41 + 19 é 60 
	60 < 100 ? sim
	60 + 19 é  79 
	79 < 100 ? sim
	79 + 19 é 98
	98 <  100 ? sim
	98 + 19 é 117
	 117 < 100 ? falsa. Então não entra no loop
 
TELA
3  22  41 60 79 98  
	
	
	
	 
		
	
		8.
		Considere a estrutura for ( ; ; ), e assinale a afirmação correta:
	
	
	
	Não é executada pois não tem incremento.
	
	
	Não é executada, pois não tem variável.
	
	
	Não é executada, pois não tem condição de teste.
	
	
	Tem a sintaxe incorreta.
	
	
	É um laço infinito.

Continue navegando