(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 15 pessoas e armazene essas idades num vetor.
  • Depois da entrada dos 15 valores, o programa deve:
    1. Mostrar qual foi a maior idade digitada.
    2. Mostrar quantas pessoas têm idade entre 21 e 28 anos (vou considerar o intervalo inclusivo: ou seja, idades \ge 21 e \le 28).
  • Informações relevantes extraídas do enunciado:
    • Tamanho do vetor: 15 elementos.
    • Faixa a contar: de 21 até 28, inclusive.
  • 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:
    1. a maior idade lida até agora (variável chamada max_idade), e
    2. o contador de pessoas cuja idade está entre 21 e 28 (variável chamada contador).
  • Para inicializar max_idade de forma segura, a técnica mais robusta é:
    • Ler a primeira idade, armazená-la e definir max_idade igual a essa primeira idade. Assim não precisamos usar “números mágicos” como -1 ou 0.
  • Depois da primeira leitura, fazemos um laço para ler as restantes 14 idades (totalizando 15) e a cada leitura:
    • comparamos com max_idade e atualizamos se necessário,
    • verificamos se está no intervalo [21,28] e, se sim, incrementamos contador.
  • Ao final, mostramos max_idade e contador.

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]; temos 15 posições, indexadas de 0 até 14.
  • Cada posição pode ser acessada com idades[i] onde i é o índice. Em C o primeiro índice é 0, não 1.
  • Nós vamos:
    • ler uma idade e guardar em idades[0],
    • definir max_idade = idades[0] e ajustar contador se necessário,
    • depois ler idades[1] até idades[14] dentro de um for e fazer as verificações.
  • 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_idade que representa a maior idade vista até agora.
  • Quando leio um novo valor a:
    • verifico se a > \text{max\_idade};
    • se sim, faço max_idade = a.
  • No início, max_idade precisa ter um valor válido. Por isso usamos a primeira leitura para inicializá-lo.
  • Exemplo pequeno: se eu ler as idades 20, 33, 27:
    • começo com max_idade = 20;
    • leio 33: como 33 > 20 atualizo max_idade = 33;
    • leio 27: 27 não é maior que 33, mantenho max_idade = 33.
  • No final max_idade vale 33, que é o máximo.

Passo 5

Como contar quantas idades estão entre 21 e 28 — explicação didática da condição.
  • Em C, a condição para “idade entre 21 e 28 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 contador com contador++.
  • Exemplo: para as idades 20, 21, 25, 28, 29 o contador será incrementado em 3 (para 21,25,28).

Passo 6

Fluxograma (representação em texto) — passo a passo visual do processo.
Start

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 14 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ólica N com valor 15. Assim, se mudarem o tamanho, você altera só aqui.
  • int idades[N]; — declara o vetor de inteiros para guardar as N idades.
  • int max_idade; — variável para guardar a maior idade encontrada.
  • int contador = 0; — inicializa o contador de pessoas na faixa [21,28].
  • int i; — índice de loop.
  • Leitura da primeira idade:
    • scanf("%d", &idades[0]) lê um inteiro do teclado e guarda em idades[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ções 1 até N-1 (ou seja, até 14 quando N=15).
  • Dentro do loop:
    • Atualiza max_idade se a idade atual for maior.
    • Incrementa contador se a idade atual estiver no intervalo.
  • No final printf imprime o max_idade e contador.
  • 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 -1 ou INT_MIN) e isso é válido porque sempre haverá pelo menos uma entrada.
  • Não esqueça: em C o vetor de tamanho 15 vai de índice 0 a 14. 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 20, 21, 28, 33, 19, 27, ... devem dar max_idade = 33 e contador incrementado para cada valor 21, 28, 27.
  • 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 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

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;
}

Exercícios relacionados