Ir ao conteúdo
  • Cadastre-se
Patrick Franco

C RESOLVIDO Média errada não encontro erro

Recommended Posts

Bom dia,

 

Iniciei o curso em Análise e Desenvolvimento de Sistemas e o professor passou um programa que calcula a média ponderada de 2 alunos que fizeram 2 provas, a primeira prova tinha peso 6, a segunda peso 4.

Escrevi o código mas na hora de executar, se eu colocar todas as notas de todas as avaliações, ele me trás o resultado 64, eu esperava um 10.

Comparei meu código com do meu amigo mas não consegui encontrar a diferença, se alguém puder me ajudar a achar este erro ficarei muito grato.

#include <stdio.h>
#include <stdlib.h>

int main()
{
	float pro1_1,pro2_1,pro1_2,pro2_2,mpa1,mpa2,ma;
	
	printf("Calculadora de Média Ponderada\n\n\n\n\n");
	
	printf("Na primeira prova o peso é igual a 6\n");
	printf("Na segunda prova o peso é igual a 4\n\n");
	printf("Digite a pontuação obtida na primeira prova do aluno 1: \n");
	scanf("%f",&pro1_1);
	printf("\nDigite a pontuação obtida na segunda prova do aluno 1: \n");
	scanf("%f",&pro2_1);
	printf("\nDigite a pontuação obtida na primeira prova do aluno 2: \n");
	scanf("%f",&pro1_2);
	printf("\nDigite a pontuação obtida na segunda prova do aluno 2: \n");
	scanf("%f",&pro2_2);
	
	mpa1 = (pro1_1 * 6) + (pro2_1 * 4) / 10;
	mpa2 = (pro1_2 * 6) + (pro2_2 * 4) / 10;
	
	ma = (mpa1 + mpa2) / 2;
	
	printf("\nA média ponderada do aluno 1 é %2.2f\n",mpa1);
	printf("A média ponderada do aluno 2 é %2.2f\n",mpa2);
	printf("A média aritmética das médias ponderadas dos alunos 1 e 2 é %2.2f\n",ma);
	
system("pause");
	
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Patrick Franco

Falta parênteses no cálculo das notas. Do jeito que está, será dividido por 10 antes de fazer a soma.

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Patrick Franco.

 

15 minutos atrás, Patrick Franco disse:

	mpa1 = (pro1_1 * 6) + (pro2_1 * 4) / 10;
	mpa2 = (pro1_2 * 6) + (pro2_2 * 4) / 10;

A fórmula está errada. Primeiro você adiciona, só depois divide! No caso, faltou os parênteses na adição, para tirar a prioridade da divisão, ou seja, no seu código, está dividindo antes de adicionar. Vide PEMDAS que é relacionada à Ordem de operações.

 

No aguardo.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bah, eu estava achando que aqueles parenteses já seriam o suficiente.

Deixei assim e funcionou:

 

	mpa1 = ((pro1_1 * 6) + (pro2_1 * 4)) / 10;
	mpa2 = ((pro1_2 * 6) + (pro2_2 * 4)) / 10;

 

valeu ae pessoal <3

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo contrário... os parênteses do código original não tem utilidade em nível de preferência, ou seja, isso:

 

7 horas atrás, Patrick Franco disse:

	mpa1 = (pro1_1 * 6) + (pro2_1 * 4) / 10;
	mpa2 = (pro1_2 * 6) + (pro2_2 * 4) / 10;

 

 

É o mesmo que isso:

	mpa1 = pro1_1 * 6 + pro2_1 * 4 / 10;
	mpa2 = pro1_2 * 6 + pro2_2 * 4 / 10;

 

Em ambos os códigos, primeiro multiplica [1] pro1_1 por 6..., depois multiplica os [2] pro2_1 por 4, após, [3] divide a conta 2 por 10, só depois adiciona a conta [1] a conta [3]. Resumindo: a conta 1 não vai ser dividida por 10.

 

 

Já no seu novo código, ficou certo:

	mpa1 = ((pro1_1 * 6) + (pro2_1 * 4)) / 10;
	mpa2 = ((pro1_2 * 6) + (pro2_2 * 4)) / 10;

 

Que é o mesmo que:

    mpa1 = (pro1_1 * 6 + pro2_1 * 4) / 10;
    mpa2 = (pro1_2 * 6 + pro2_2 * 4) / 10;

Veja que os parênteses da multiplicação não são necessário... entretanto, para um melhor efeito didático, deixe da forma que você fez... (visualmente separa as etapas)

 

Att

 

 

  • Amei 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

×