Ir ao conteúdo
  • Cadastre-se
jpaulofsa

C Média Idade dos funcionários cadastrados

Recommended Posts

#include <stdio.h>
#include <ctype.h>         // Uso da função toupper

struct funcionario{
    char nome[50];
    float idade;
};

struct funcionario lista_funcionarios[50];

void cadastra_funcionario(int* tamanho_lista){

    printf("Informe o nome do funcionario \n");
    scanf("%s[^\n]%*c", lista_funcionarios[*tamanho_lista].nome);

    printf("Informe a idade do funcionario \n");
    scanf("%f%*c", &lista_funcionarios[*tamanho_lista].idade);
    (*tamanho_lista)++;
}

void media_idade(struct funcionario lista_funcionarios[], int* tamanho_lista) {
    if (*tamanho_lista > 0) {
        int i, maior_indice = 0;
        float media_idade; 
        media_idade = lista_funcionarios[*tamanho_lista].idade / *tamanho_lista;
    	printf("Media de idade dos funcionarios cadastrados e: %f \n", media_idade);
	}
		
}

int main(void) {
    int tamanho_lista = 0;
    int continuar = 1;
    char opcao;
    do {
        printf ("Digite C para cadastrar ou M para saber a media de idade dos funcionarios \n");
        scanf("%c%*c", &opcao);
        opcao = toupper(opcao);
        switch (opcao) {
        case 'C':
            cadastra_funcionario( &tamanho_lista);
            break;
        case 'M':
            media_idade(lista_funcionarios, &tamanho_lista);
            break;
        default:
            continuar = 0;
    	}
	} while (continuar == 1); 
    getchar();
    return 0;
}

Preciso calcular a média de idade dos funcionários cadastrados...não estou conseguindo, além de, após calcular média, o programa não encerra e continua solicitando para cadastrar ou calcular a media...alguém poderia ajudar-me!? e explicar o que estou fazendo de errado, se possível...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@jpaulofsa    para calcular a média você precisa somar todas as idades e dividir pela quantidade de funcionários então você precisa usar um comando de repetição para fazer isso e que pode ser o for , então essa função ficaria assim :

void media_idade(struct funcionario lista_funcionarios[], int* tamanho_lista){
    if (*tamanho_lista > 0) {
        int i, maior_indice = 0;
        float media_idade,total=0;
        for(i=0;i<*tamanho_lista;i++)
            total += lista_funcionarios[i].idade;
        media_idade = total / *tamanho_lista;
    	printf("Media de idade dos funcionarios cadastrados e: %.2f \n", media_idade);
	}

}

e para sair do programa você precisar modificar o valor da variável de  controle do loop do / while  que é continuar ,  para isso você pede para o usuário digitar se quer sair ou não e se quiser sair então modifique a variável continuar para zero por exemplo e o programa finaliza .  coloque uma variável

char op='n';

lá no  inicio ,  e dentro do switch  pode ser assim :

case 'M':
    media_idade(lista_funcionarios, &tamanho_lista);
    printf("Quer Terminar O Programa   S/N ");
    scanf("%c",&op);
    if(op=='s')continuar=0;
    break;

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Muito obrigado, Devair. Não conhecia (media_idade += lista_funcionarios[i/**tamanho_lista*/].idade / *tamanho_lista;)  esse operador += ficquei com uma certa dúvida nessa linha, mas me ajudou muito.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×