(5 pontos) Faça o fluxograma e a codificação de um programa em Linguagem C , que deverá preencher um vetor com a idade de 15 pessoas. Após a etapa de entrada dos dados mostre qual foi a maior idade digitada e quantas pessoais tem idade entre 21 a 28 anos.
Passo 1
O que o enunciado pede e quais informações ele dá.
- Precisamos escrever um programa em Linguagem C que leia as idades de
pessoas e armazene essas idades num vetor. - Depois da entrada dos
valores, o programa deve: - Mostrar qual foi a maior idade digitada.
- Mostrar quantas pessoas têm idade entre
e anos (vou considerar o intervalo inclusivo: ou seja, idades e ).
- Informações relevantes extraídas do enunciado:
- Tamanho do vetor:
elementos. - Faixa a contar: de
até , inclusive.
- Tamanho do vetor:
- Nada mais foi pedido (por exemplo, não foi pedido tratar entradas inválidas de forma especial), então vou assumir entrada simples por teclado.
Passo 2
Estratégia geral e escolha do método (passo a passo lógico, sem código ainda).
- Vamos armazenar as idades em um vetor (array) para seguir o enunciado.
- Ao ler as idades vamos manter duas informações úteis:
- a maior idade lida até agora (variável chamada
max_idade), e - o contador de pessoas cuja idade está entre
e (variável chamada contador).
- a maior idade lida até agora (variável chamada
- Para inicializar
max_idadede forma segura, a técnica mais robusta é:- Ler a primeira idade, armazená-la e definir
max_idadeigual a essa primeira idade. Assim não precisamos usar “números mágicos” comoou .
- Ler a primeira idade, armazená-la e definir
- Depois da primeira leitura, fazemos um laço para ler as restantes
idades (totalizando ) e a cada leitura: - comparamos com
max_idadee atualizamos se necessário, - verificamos se está no intervalo
e, se sim, incrementamos contador.
- comparamos com
- Ao final, mostramos
max_idadeecontador.
Passo 3
Explicação didática: o que é um vetor (array) e como vamos usá-lo aqui.
- Um vetor é uma sequência de posições numeradas onde podemos guardar valores do mesmo tipo. Em C, se declaramos
int idades[15];temosposições, indexadas de até . - Cada posição pode ser acessada com
idades[i]ondeié o índice. Em C o primeiro índice é, não . - Nós vamos:
- ler uma idade e guardar em
idades[0], - definir
max_idade = idades[0]e ajustarcontadorse necessário, - depois ler
idades[1]atéidades[14]dentro de umfore fazer as verificações.
- ler uma idade e guardar em
- Vantagem de guardar no vetor: se você precisar depois imprimir todas as idades ou processá-las novamente, elas estão salvas.
Passo 4
Como encontrar a maior idade — explicação didática do algoritmo do máximo.
- A ideia do máximo é simples: mantenho um valor chamado
max_idadeque representa a maior idade vista até agora. - Quando leio um novo valor
a:- verifico se
; - se sim, faço
max_idade = a.
- verifico se
- No início,
max_idadeprecisa ter um valor válido. Por isso usamos a primeira leitura para inicializá-lo. - Exemplo pequeno: se eu ler as idades
: - começo com
max_idade = 20; - leio
: como atualizo max_idade = 33; - leio
: não é maior que , mantenho max_idade = 33.
- começo com
- No final
max_idadevale, que é o máximo.
Passo 5
Como contar quantas idades estão entre
e
— explicação didática da condição.
- Em C, a condição para “idade entre
e inclusive” é: if (idade >= 21 && idade <= 28)
- Explicando os operadores:
>=significa “maior ou igual” e<=significa “menor ou igual”.&&é o operador lógico E: a condição inteira só é verdadeira se as duas comparações forem verdadeiras.
- Se a condição for verdadeira, incrementamos
contadorcomcontador++. - Exemplo: para as idades
o contador será incrementado em (para ).
Passo 6
Fluxograma (representação em texto) — passo a passo visual do processo.
Start
↓
Inicializar
↓
Ler
↓
↓
↓
Se
↓
i = 1
↓
Loop: enquanto
↓
Ler
↓
Se
↓
Se
↓
↓
Fim do Loop
↓
Imprimir
↓
End
↓
Inicializar
i = 0↓
Ler
idades[0]↓
max_idade = idades[0]↓
contador = 0↓
Se
idades[0] >= 21 && idades[0] <= 28 então contador = contador + 1↓
i = 1
↓
Loop: enquanto
i < 15 faça:↓
Ler
idades[i]↓
Se
idades[i] > max_idade então max_idade = idades[i]↓
Se
idades[i] >= 21 && idades[i] <= 28 então contador = contador + 1↓
i = i + 1↓
Fim do Loop
↓
Imprimir
max_idade e contador↓
End
(Esse fluxograma em texto segue exatamente a estratégia: primeira leitura para inicializar o máximo e depois laço para as demais
leituras.)
Passo 7
Código em C completo e comentado (linha a linha explicada depois). Copie e cole este código no seu compilador C.
#include <stdio.h>
#define N 15
int main(void) {
int idades[N];
int max_idade;
int contador = 0;
int i;
/* Leitura da primeira idade para inicializar max_idade */
printf("Digite a idade da pessoa 1: ");
if (scanf("%d", &idades[0]) != 1) return 1; /* leitura simples */
max_idade = idades[0];
if (idades[0] >= 21 && idades[0] <= 28) contador++;
/* Leitura das próximas N-1 idades */
for (i = 1; i < N; i++) {
printf("Digite a idade da pessoa %d: ", i + 1);
if (scanf("%d", &idades[i]) != 1) return 1;
/* Atualiza máximo se necessário */
if (idades[i] > max_idade) {
max_idade = idades[i];
}
/* Conta se estiver no intervalo [21,28] */
if (idades[i] >= 21 && idades[i] <= 28) {
contador++;
}
}
/* Resultado final */
printf("\nMaior idade digitada: %d\n", max_idade);
printf("Quantidade de pessoas com idade entre 21 e 28 anos: %d\n", contador);
return 0;
}
Passo 8
Explicação do código, linha a linha (para você entender na prova e poder reproduzir).
#include <stdio.h>— traz as funções padrão de entrada/saída (printf,scanf).#define N 15— define uma constante simbólicaNcom valor. Assim, se mudarem o tamanho, você altera só aqui. int idades[N];— declara o vetor de inteiros para guardar asidades. int max_idade;— variável para guardar a maior idade encontrada.int contador = 0;— inicializa o contador de pessoas na faixa. int i;— índice de loop.- Leitura da primeira idade:
scanf("%d", &idades[0])lê um inteiro do teclado e guarda emidades[0].max_idade = idades[0];inicializa o máximo com a primeira idade.- A verificação
if (idades[0] >= 21 && idades[0] <= 28) contador++;conta a primeira se estiver no intervalo.
- Loop
for (i = 1; i < N; i++)— lê as idades das posições1atéN-1(ou seja, atéquando ). - Dentro do loop:
- Atualiza
max_idadese a idade atual for maior. - Incrementa
contadorse a idade atual estiver no intervalo.
- Atualiza
- No final
printfimprime omax_idadeecontador. return 0;indica que o programa terminou corretamente.
Passo 9
Dicas práticas para a prova (como justificar a solução rapidamente e evitar erros).
- Explique que você escolheu inicializar o máximo com a primeira leitura para evitar um valor “chute” (como
ou INT_MIN) e isso é válido porque sempre haverá pelo menos uma entrada. - Não esqueça: em C o vetor de tamanho
vai de índice a . Um erro comum é loop até i <= 15(isso ultrapassa o vetor). - Use
contador++para incrementar o contador (é a forma mais curta). - Teste mentalmente com um exemplo pequeno para checar: por exemplo entradas
devem dar max_idade = 33econtadorincrementado para cada valor. - Se na prova for pedida a validação (ex.: idade negativa), comente que se necessário basta acrescentar
if (idades[i] < 0) { /* tratar */ }antes das verificações.
Resposta
Fluxograma (em texto):
Start
↓
Inicializar
↓
Ler
↓
↓
↓
Se
↓
Start
↓
Inicializar
↓
Ler
idades[0]↓
max_idade = idades[0]↓
contador = 0↓
Se
idades[0] >= 21 && idades[0] <= 28 então contador = contador + 1↓
↓
Loop: enquanto faça:
Ler
Se
Se
↓
Imprimir
↓
End
Loop: enquanto
Ler
idades[i]Se
idades[i] > max_idade então max_idade = idades[i]Se
idades[i] >= 21 && idades[i] <= 28 então contador = contador + 1i = i + 1↓
Imprimir
max_idade e contador↓
End
Código em C:
#include <stdio.h>
#define N 15
int main(void) {
int idades[N];
int max_idade;
int contador = 0;
int i;
/* Leitura da primeira idade para inicializar max_idade */
printf("Digite a idade da pessoa 1: ");
if (scanf("%d", &idades[0]) != 1) return 1; /* leitura simples */
max_idade = idades[0];
if (idades[0] >= 21 && idades[0] <= 28) contador++;
/* Leitura das próximas N-1 idades */
for (i = 1; i < N; i++) {
printf("Digite a idade da pessoa %d: ", i + 1);
if (scanf("%d", &idades[i]) != 1) return 1;
/* Atualiza máximo se necessário */
if (idades[i] > max_idade) {
max_idade = idades[i];
}
/* Conta se estiver no intervalo [21,28] */
if (idades[i] >= 21 && idades[i] <= 28) {
contador++;
}
}
/* Resultado final */
printf("\nMaior idade digitada: %d\n", max_idade);
printf("Quantidade de pessoas com idade entre 21 e 28 anos: %d\n", contador);
return 0;
}