Uma empresa de informática comercializa um programa para gerenciar o cadastro de informações dos funcionários de empresas. Uma determinada empresa, com 8 departamentos, adquiriu o programa e, ao executar o programa pela primeira vez, informou o número de funcionários e as informações de cada funcionário. As informações armazenadas são nome (cadeia de caracteres), idade (inteiro), sexo (caractere), tempo de casa, em anos (inteiro), departamento (inteiro) e salário (em reais). Escreva um programa em C para realizar as seguintes operações:
f. Exibir a idade média, por departamento;

Passo 1

O enunciado pede para calcular a idade média de funcionários em cada um dos 8 departamentos, usando um programa em C. Vamos precisar ler o número total de funcionários, em seguida iterar sobre cada um para acumular a soma das idades por departamento e o número de funcionários em cada departamento.

Passo 2

Declarar constantes e vetores: usar uma constante DEPTS = 8; criar um vetor idade_sum[DEPTS] inicializado com zero para acumular as idades, e outro vetor idade_sum[DEPTS] inicializado com zero para acumular as idades, e outro vetor count[DEPTS] inicializado com zero para contar quantos funcionários há em cada departamento.
Fazer a leitura do número total de funcionários, digamos n. Em seguida, em um loop de 1 a n, ler os dados do funcionário: nome, idade, sexo, tempo de casa, departamento (valor de 1 a 8) e salário. Para cada funcionário, incrementar idade_sum[dept-1] com a idade lida e count[dept-1] com 1.

Passo 3

Após ler todos os funcionários, percorrer os departamentos de 1 a 8. Para cada departamento, verificar se count[i] é maior que zero. Se for, calcular a média como (float)idade_sum[i] / count[i] e exibir. Caso contrário, exibir que não há funcionários naquele departamento.
Implemente em C usando vetores, loops for e leitura com scanf. Ao final, formate a saída indicando o número do departamento e a sua idade média ou mensagem de inexistência de funcionários.

Passo 4

Abaixo está o código completo em C que implementa esses passos.

Resposta

#include <stdio.h>
#define DEPTS 8
int main() {
int n;
printf(“Digite o número total de funcionários: “);
scanf(”%d”, &n);
// Vetores para acumular soma de idades e contagem
int idade_sum[DEPTS] = {0};
int count[DEPTS] = {0};

for (int i = 0; i < n; i++) {
    char nome[100];
    int idade;
    char sexo;
    int tempo;
    int dept;
    float salario;

    printf("\nFuncionário %d:\n", i + 1);
    printf("Nome: ");
    scanf("%99s", nome);
    printf("Idade: ");
    scanf("%d", &idade);
    printf("Sexo (M/F): ");
    scanf(" %c", &sexo);
    printf("Tempo de casa (anos): ");
    scanf("%d", &tempo);
    printf("Departamento (1-%d): ", DEPTS);
    scanf("%d", &dept);
    printf("Salário: ");
    scanf("%f", &salario);

    if (dept >= 1 && dept <= DEPTS) {
        idade_sum[dept - 1] += idade;
        count[dept - 1]++;
    } else {
        printf("Departamento inválido para este funcionário.\n");
    }
}

printf("\n=== Idade média por departamento ===\n");
for (int i = 0; i < DEPTS; i++) {
    if (count[i] > 0) {
        float media = (float)idade_sum[i] / count[i];
        printf("Departamento %d: média de idade = %.2f anos\n", i + 1, media);
    } else {
        printf("Departamento %d: sem funcionários\n", i + 1);
    }
}

return 0;
}

Exercícios relacionados