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:  
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






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

×