Considerando a execução do algoritmo abaixo, responda ao que se pede nos itens a e b.
- #include <stdio.h>
- int main() {
- int vetA[10], vetB[10];
- int
;
- // Inicialização dos vetores e atribuições iniciais
-
for
-
;
- if
-
;
- } else {
-
;
- }
- }
- // Modificação dos vetores com base na condição enquanto
- for
- while
veta
-
;
- vetA[i]–;
- }
- }
- return 0;
- }
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
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ãovetA[i]
recebe o valor dei + 1
. - Se
i
for ímpar, entãovetA[i]
recebe o valor de2 * (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:
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 devetA[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
ei + 1 = 1
. - Verifica-se se
1 > 1
? Não, condição falsa. Nenhuma alteração.
- Inicialmente,
-
Para i = 1:
- Inicialmente,
vetA[1] = 4
ei + 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.
- Inicialmente,
-
Para i = 2:
- Inicialmente,
vetA[2] = 3
ei + 1 = 3
. - Verifica-se se
3 > 3
? Não, condição falsa. Nenhuma alteração.
- Inicialmente,
Após essa segunda parte, os valores das tr��s primeiras posições ficam:
Resposta
Após a execução da linha 22, as três primeiras posições dos vetores são: