Considerando a execução do algoritmo abaixo, responda ao que se pede nos itens a e b.
  1. #include <stdio.h>
  2. int main() {
  3. int vetA[10], vetB[10];
  4. int i;
  5. // Inicialização dos vetores e atribuições iniciais
  6. f for (i=0 ; i<10 ; i++)
  7. vet B[i]=0;
  8. if (i % 2==0)
  9. veta[i]=i+1;
  10. } else {
  11. vet A[i]=2 *(i+1);
  12. }
  13. }
  14. // Modificação dos vetores com base na condição enquanto
  15. for (i=0 ; i<10 ; i++)
  16. while ( veta [i]>i+1)
  17. vetB[i]=vetA[i];
  18. vetA[i]–;
  19. }
  20. }
  21. return 0;
  22. }
    Apresente PELO MENOS as 3 primeiras posições dos vetores vetA e vetB ao término da execução da linha 22.
Posição 0 1 2 3 4 5 6 7 8 9
vetA
vetB

Passo 1

Vamos entender o que a questão está pedindo. Temos um trecho de código em C que manipula dois vetores, vetA e vetB, cada um com 10 posições. O objetivo é descobrir os valores das três primeiras posições desses vetores após a execução completa do código até a linha 22. Para resolver isso, vamos precisar entender como loops for e while funcionam, além de saber como usar condicionais if-else e operadores como o módulo % para verificar se um número é par ou ímpar.

Passo 2

Primeiro, vamos analisar a inicialização dos vetores vetA e vetB. O código usa um loop for que vai de i = 0 até i < 10 (ou seja, i de 0 a 9). Dentro desse loop:
  • vetB[i] é sempre inicializado com 0.
  • Se i for par (i % 2 == 0), então vetA[i] recebe o valor de i + 1.
  • Se i for ímpar, então vetA[i] recebe o valor de 2 * (i + 1).
Vamos calcular os valores de vetA e vetB após esse primeiro loop para as três primeiras posições (índices 0, 1 e 2):
  • Para i = 0 (par):
    • vetB[0] = 0
    • vetA[0] = 0 + 1 = 1
  • Para i = 1 (ímpar):
    • vetB[1] = 0
    • vetA[1] = 2 * (1 + 1) = 4
  • Para i = 2 (par):
    • vetB[2] = 0
    • vetA[2] = 2 + 1 = 3
Portanto, após o primeiro loop:
|c|c|c|c| hline Posição & 0 & 1 & 2 hline vetA & 1 & 4 & 3 hline vetB & 0 & 0 & 0 hline çã

Passo 3

Agora, vamos para a segunda parte do código, que também utiliza um loop for de i = 0 a i < 10. Dentro desse loop, há um while que verifica se vetA[i] > i + 1. Enquanto essa condição for verdadeira, executa-se:
  • vetB[i] recebe o valor de vetA[i].
  • vetA[i] é decrementado em 1 (vetA[i]--).
Vamos aplicar isso para as três primeiras posições:
  • Para i = 0:
    • Inicialmente, vetA[0] = 1 e i + 1 = 1.
    • Verifica-se se 1 > 1? Não, condição falsa. Nenhuma alteração.
  • Para i = 1:
    • Inicialmente, vetA[1] = 4 e i + 1 = 2.
    • Verifica-se se 4 > 2? Sim.
      • vetB[1] = 4
      • vetA[1] = 4 - 1 = 3
    • Verifica-se novamente: 3 > 2? Sim.
      • vetB[1] = 3
      • vetA[1] = 3 - 1 = 2
    • Verifica-se novamente: 2 > 2? Não. Loop termina.
  • Para i = 2:
    • Inicialmente, vetA[2] = 3 e i + 1 = 3.
    • Verifica-se se 3 > 3? Não, condição falsa. Nenhuma alteração.
Após essa segunda parte, os valores das tr��s primeiras posições ficam:
|c|c|c|c| hline Posição & 0 & 1 & 2 hline vetA & 1 & 2 & 3 hline vetB & 0 & 3 & 0 hline çã

Resposta

Após a execução da linha 22, as três primeiras posições dos vetores são:
|c|c|c|c| hline Posição & 0 & 1 & 2 hline vetA & 1 & 2 & 3 hline vetB & 0 & 3 & 0 hline çã

Exercícios relacionados