Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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;

 

Editado por devair1010
  • 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






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

×