Ir ao conteúdo

C Problema para calcular a média em C


Ir à solução Resolvido por isrnick,

Posts recomendados

  • Moderador
Postado

Boa noite, eu estou tentando fazer um programa que tem o intuito de receber 10 salários de funcionários, dizer quantos deles possuem salário acima de 1500 reais e calcular a média dos salários. 

O programa lê os salários, informa quantos funcionários recebem mais que 1500 reais mas eu não sei como calcular a média, já que a variável que armazena o salário muda de valor 10 vezes. 

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <locale.h>

    int main() {
      setlocale(LC_ALL,"");
      float salario;
      float mediadossalarios;
      int acimade1500 = 0;
      int i;
      
     
            for(i = 1; i <= 10; i++) {
                
                printf("Qual o salário do funcionário %d : \t", i);
                scanf("%f", &salario);
               
        
                if(salario > 1500) {
                    (acimade1500++);
                }
                
                    
                
    
            }
              if (i = 10) {
                printf("Existe(m) %d funcionário(s) ganhando acima de 1500 reais.", acimade1500);
                    }
            
        return 0;       
    }

 

  • Solução
Postado

Média é igual a soma de todos os salários dividido pela quantidade de salários, então use uma variável para ir somando cada salário que é digitado, e no fim divida o resultado final da soma pela quantidade de salários, ou seja 10 salários, para obter a média.

  • Curtir 2
  • Obrigado 1
  • Moderador
Postado

@isrnick Obrigado. Eis como ficou:

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <locale.h>

    int main() {
      setlocale(LC_ALL,"");
      float salario;
      int acimade1500 = 0;
      int i;
      float salariototal = 0;
      
      
            for(i = 1; i <= 10; i++) {
                
                printf("Qual o salário do funcionário %d : \t", i);
                scanf("%f", &salario);
                (salariototal += salario);
                
                
        
                if(salario > 1500) {
                    (acimade1500++);
                }
                
                    
                
    
            }
              if (i = 10) {
                printf("\nExiste(m) %d funcionário(s) ganhando acima de 1500 reais.", acimade1500);
                
                printf("\nA média dos salários é : %g", salariototal / 10);
                    }
            
        return 0;       
    }

 

  • Curtir 3
  • Membro VIP
Postado

Só complementando.

 

1#

@Batata Defumada, sempre mantenha o código indentado.

 

Uma dica bacana para ajudar é usando esse site:

https://www.tutorialspoint.com/online_c_formatter.htm

 

Fazendo alguns ajustes, poderia ficar assim:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <locale.h>    

int main() {
    setlocale(LC_ALL,"");
    float salario;
    int acimade1500 = 0;
    int i;
    float salariototal = 0;

    for(i = 1; i <= 10; i++) {
        printf("Qual o salário do funcionário %d : \t", i);
        scanf("%f", &salario);
        salariototal += salario;
        if (salario > 1500) {
            acimade1500++;
        }
    }
    if (i = 10) {
        printf("\nExiste(m) %d funcionário(s) ganhando acima de 1500 reais.", acimade1500);
        printf("\nA média dos salários é : %g", salariototal / 10);
    }
    return 0;
}

 

 

 

2#

Sobre:

14 horas atrás, Batata Defumada disse:

    if (i = 10) {
        printf("\nExiste(m) %d funcionário(s) ganhando acima de 1500 reais.", acimade1500);
        printf("\nA média dos salários é : %g", salariototal / 10);
    }


Quando esse if é executado, o valor de i sempre estará com 10, logo não sendo necessário esta estrutura de seleção.

 

 

Alguns outros pontos poderia ser revistos... segue abaixo um código resumindo-os.

#include <stdio.h>
//#include <stdlib.h>   NÃO ESTÁ SENDO UTILIZADA
//#include <conio.h>    NÃO ESTÁ SENDO UTILIZADA
//#include <ctype.h>    NÃO ESTÁ SENDO UTILIZADA
#include <locale.h>    

int main() {
    setlocale(LC_ALL,"");
    float salario;
    int   acimade1500 = 0;
    float salariototal = 0;
    int   i;

    for (i = 1; i <= 10; i++) {
        printf("Qual o salário do funcionário %d : \t", i);
        scanf("%f", &salario);
        salariototal += salario;
        if (salario > 1500) //{ Para uma instrução as {} são facultativas... mas tb não vejo problema se deixar... 
            acimade1500++;
        //}
    }
    // if (i = 10) {   ESSE IF NÃO TEM UTILIDADE, POIS SEMPRE I VAI SER IGUAL A 10
    printf("\nExiste(m) %d funcionário(s) ganhando acima de 1500 reais.", acimade1500);
    printf("\nA média dos salários é : %g", salariototal / 10);
    //}
    return 0;
}

 

 

 

***

 

Att

  • Curtir 1
  • Obrigado 1
  • Moderador
Postado

@Simon Viegas Obrigado pelas dicas. Em relação ao if ( i =10) eu tinha colocado isso porque por algum motivo não tava esperando o "for" acabar pra imprimir aquela mensagem na tela então a cada valor inserido já printava aquilo, deve que estava dentro do bloco de instrução do for por isso estava dando errado e eu não percebi, enfim obrigado novamente.

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!