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:
e. Exibir o salário médio, por departamento;

Passo 1

O enunciado pede para, dado um cadastro de funcionários de uma empresa com 8 departamentos, calcular e exibir o salário médio de cada departamento. O conteúdo aqui é manipulação de vetores, estruturas (struct), uso de loops para acumular valores e cálculo de média.

Passo 2

Definir uma struct para representar cada funcionário e declarar as variáveis necessárias: vetor de funcionários, número de funcionários (n), vetores para acumular soma de salário e contagem por departamento.

Passo 3

Ler o número de funcionários (n) e, dentro de um loop de 1 até n, ler os campos de cada funcionário: nome, idade, sexo, tempo de casa, departamento (1 a 8) e salário, armazenando-os no vetor.

Passo 4

Inicializar dois vetores de tamanho 8 (índices 0 a 7) com zero: um para somar salários (somaSalario[8]) e outro para contar quantos funcionários há em cada departamento (contagem[8]). No mesmo loop de leitura (ou em um loop separado), incrementar somaSalario[depto-1] += salario e `contagem[depto-1]++.

Passo 5

Após preencher somas e contagens, percorrer os 8 departamentos e para cada um calcular a média como media = somaSalario[i] / contagem[i] (checando se contagem[i] é maior que zero) e usar printf para exibir o salário médio de cada departamento.

Resposta

#include <stdio.h>
#include <stdlib.h>
#define DEPTOS 8
#define MAX_NOME 50
typedef struct {
char nome[MAX_NOME];
int idade;
char sexo;
int tempoCasa;
int departamento;
float salario;
} Funcionario;
int main() {
int n;
printf(“Digite o número de funcionários: “);
scanf(”%d”, &n);
Funcionario *func = malloc(n * sizeof(Funcionario));
if (func == NULL) {
    printf("Erro de alocação.\n");
    return 1;
}

for (int i = 0; i < n; i++) {
    printf("\n--- Funcionário %d ---\n", i+1);
    printf("Nome: ");
    scanf(" %49[^"]", func[i].nome);
    printf("Idade: ");
    scanf("%d", &func[i].idade);
    printf("Sexo (M/F): ");
    scanf(" %c", &func[i].sexo);
    printf("Tempo de casa (anos): ");
    scanf("%d", &func[i].tempoCasa);
    printf("Departamento (1 a %d): ", DEPTOS);
    scanf("%d", &func[i].departamento);
    printf("Salário: ");
    scanf("%f", &func[i].salario);
}

float somaSalario[DEPTOS] = {0.0f};
int contagem[DEPTOS] = {0};

for (int i = 0; i < n; i++) {
    int d = func[i].departamento;
    if (d >= 1 && d <= DEPTOS) {
        somaSalario[d-1] += func[i].salario;
        contagem[d-1]++;
    }
}

printf("\nSalário médio por departamento:\n");
for (int i = 0; i < DEPTOS; i++) {
    if (contagem[i] > 0) {
        float media = somaSalario[i] / contagem[i];
        printf("Departamento %d: R$ %.2f\n", i+1, media);
    } else {
        printf("Departamento %d: sem funcionários\n", i+1);
    }
}

free(func);
return 0;
}

Exercícios relacionados