Objetivo: varrer vetor e aplicar decisões com if.
Descrição: leia 8 inteiros. Encontre maior e menor valor e índices em que aparecem (primeira ocorrência).
Critérios:
- Inicializar com v[0].
- Um for para busca; atualizar posição com if.
Extensão: também exibir a última ocorrência de cada um.
Descrição: leia 8 inteiros. Encontre maior e menor valor e índices em que aparecem (primeira ocorrência).
Critérios:
Passo 1
O que o enunciado pede e quais informações ele dá:
- Ler
inteiros (ou seja, um vetor com exatamente elementos). - Encontrar o maior valor e o menor valor presentes no vetor.
- Encontrar os índices (posições) das primeiras ocorrências do maior e do menor.
- Extensão: também exibir as últimas ocorrências do maior e do menor.
- Critério obrigatório: inicializar as variáveis de máximo e mínimo com o valor de
. - Critério obrigatório: usar um único laço
para fazer a busca e usar decisões com para atualizar valores/índices.
Informações resumidas que recebemos: tamanho fixo; inicializar com ; procurar primeiro/último usando condições com .
Passo 2
Conceito básico e por que inicializar com
:
- Quando vamos varrer um vetor e queremos comparar com “o que já vimos”, precisamos de um valor inicial. Se usamos
como inicial, garantimos que existe algum valor real do vetor para comparar (evitamos usar valores mágicos como ou que podem confundir). - Variáveis que vamos manter durante a varredura (cada uma explicada):
-
: o vetor de inteiros lidos. -
: o maior valor encontrado até agora. -
: o menor valor encontrado até agora. -
: índice da primeira ocorrência do maior (se atualizo só quando encontro valor estritamente maior, a primeira ocorrência fica). -
: índice da primeira ocorrência do menor. -
: índice da última ocorrência do maior (se atualizo também quando encontro valor igual, o índice vai se mover para a última ocorrência). -
: índice da última ocorrência do menor.
-
- Índices: aqui vou usar índice começando em
(ou seja, é o primeiro elemento e é o oitavo). Se você for forçado a entregar índices começando em na prova, basta somar ao índice final antes de imprimir.
Passo 3
Estratégia de atualização no laço
:
- Inicialização (antes do laço):
- Ler os
valores em até . - Fazer
e . - Fazer
, . - Fazer
, .
- Ler os
- Laço para varrer as posições restantes:
- Percorrer
de até (inclusive). Em cada iteração, comparar com e . - Regras para manter a primeira ocorrência:
- Se
então: -
-
-
(nova maior aparição; também é a última até agora)
-
- Se
então: -
- Se
- Regras para manter a última ocorrência (mesma passada):
- Se
então: -
(atualiza para a posição mais recente do maior)
-
- Se
então: -
- Se
- Percorrer
- Observação importante sobre ordem dos
: - Quando encontrar um valor maior que
, atualizamos primeiro. Se houver um teste separado de igualdade a seguir, ele deve usar o novo ; por isso, a forma limpa é: - Primeiro testar
(caso novo maior). - Else if (ou teste separado) testar
para atualizar .
- Primeiro testar
- Similar para o mínimo.
- Quando encontrar um valor maior que
- Assim conseguimos em uma única varredura manter:
- a primeira ocorrência (porque só mudamos
quando o valor aumenta/diminui estritamente), - a última ocorrência (porque sempre que vemos igualdade atualizamos o
).
- a primeira ocorrência (porque só mudamos
Passo 4
Pseudocódigo detalhado linha a linha (leitura e lógica explicada):
- Leitura:
- Leia os
inteiros e armazene em .
- Leia os
- Inicialização:
-
- Laço principal:
- Para
de até faça: - Se
então: -
- Senão se
então: -
- Fim se
- Se
então: -
- Senão se
então: -
- Fim se
- Se
- Fim para
- Para
- Ao final do laço, você tem:
-
e (maior e menor valores). -
, (primeira e última ocorrências do maior). -
, (primeira e última ocorrências do menor).
-
- Impressão:
- Imprima
e e (ou no formato pedido pela prova). - Imprima
e e .
- Imprima
Passo 5
Exemplo passo a passo com dados concretos (serve para fixar a ideia). Suponha que os
números lidos sejam:
.
- Inicializamos com
, , índices todos . -
: . então , , . -
: . então . Não muda o mínimo. -
: . então , , . -
: . então . -
: . então , , . -
: . então . -
: . então , , . - Resultado do exemplo:
-
, , . -
, , .
Isso mostra que a primeira ocorrência do maior foi eme a última em (índices base ) e o menor apareceu pela primeira e última vez em .
-
Passo 6
Dicas práticas para prova (curtas e úteis):
- Faça sempre a leitura dos
números antes de inicializar e com . - Não use
quando quer detectar última ocorrência: para última ocorrência use para atualizar o índice ao ver igualdade; para primeira ocorrência só atualize quando for estritamente maior/menor. - Teste mentalmente com casos extremos: todos iguais (então primeira e última serão
e respectivamente), crescente, decrescente, valores repetidos intercalados. - Se a prova pede índices começando em
, lembre-se de somar ao final.
Resposta
Leia
\n
\n
\n
\n
\n
\n
\nPara
de
até
faça:\n\quad Se
então:\n\quad\quad
\n\quad\quad
\n\quad\quad
\n\quad Senão se
então:\n\quad\quad
\n\quad Fim se\n\quad Se
então:\n\quad\quad
\n\quad\quad
\n\quad\quad
\n\quad Senão se
então:\n\quad\quad
\n\quad Fim se\nFim para\nImprima
,
,
\nImprima
,
,