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