Seguinte, preciso fazer um programa que leia o codigo de um aluno e suas 3 notas, depois calcule a media ponderada dele(sendo que a maior nota tem peso 4 e as outras duas terão peso 3, ai final, preciso mostrar o codigo que o aluno digitou, as suas 3 notas, a media ponderada dele e uma mensagem APROVADO se a media for igual ou maior que 5 e caso contrario exiba REPROVADO.
tenho isso até agora:
importjava.util.Scanner;publicclassNotaMediaPonderada{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubdoublemedia;doublenotaMaior=0;doublesomaMenor=0;Scannerteclado=newScanner(System.in);System.out.println("Digite o código do aluno");doublecod=teclado.nextDouble();System.out.println("Digite a primeira nota");doublenota1=teclado.nextDouble();System.out.println("Digite a segunda nota");doublenota2=teclado.nextDouble();System.out.println("Digite a terceira nota");doublenota3=teclado.nextDouble();if(nota1>nota2&¬a1>nota3){nota1=notaMaior;somaMenor=nota2+nota3;}elseif(nota2>nota1&¬a2>nota3){nota2=notaMaior;nota2=nota2;somaMenor=nota1+nota3;}elseif(nota3>nota1&¬a3>nota2){nota3=notaMaior;nota3=nota3;somaMenor=nota1+nota2;}media=((notaMaior*0.6)+(somaMenor*0.4));if(media>=5){System.out.println("APROVADO");}else{System.out.println("REPROVADO");}System.out.println("a primeira nota é "+nota1);System.out.println("a segunda nota é "+nota2);System.out.println("a terceira nota é "+nota3);System.out.println("a média é: "+media);}}
O que tu queres é exactamente o contrário. Queres que a notaMaior seja a nota1 e não que a nota1 seja a notaMaior (que será 0 pelo que atribuíste acima)
if(nota1>nota2&¬a1>nota3){
notaMaior=nota1;
O mesmo problema de acima, e ainda mais, para que aquela última linha? Atribuir um valor a ele próprio como é óbvio não vai mudar nada.
Se reparares bem não é isto que diz o teu enunciado.
A
Alexsandro_Lopes
onde estão declarados os pesos?
Por que 0.6 e 0.4?
Da onde veio esses valores?
São padrão?
Não poderiam declarados com atributos?
Poderiam ser passados via console feito as notas ou declarado e inicializado como final “constante”
media=((notaMaior*0.6)+(somaMenor*0.4));
MP = (nota1 x peso1) + (nota2 x peso2) / (peso1 +peso2)
S
snynder
pmlm:
snynder:
if(nota1>nota2&¬a1>nota3){
nota1=notaMaior;
O que tu queres é exactamente o contrário. Queres que a notaMaior seja a nota1 e não que a nota1 seja a notaMaior (que será 0 pelo que atribuíste acima)
isso me ajudou, não tinha percebido isso, obrigado.
O mesmo problema de acima, e ainda mais, para que aquela última linha? Atribuir um valor a ele próprio como é óbvio não vai mudar nada.
essa linha eu esqueci de deletar quando postei o código aqui, falta de atenção, no meuo código aquei eu já tinha deletado ela, foi descuido isso.
snynder:
media=((notaMaior*0.6)+(somaMenor*0.4));
estou com essa dificuldade, pode me ajudar?
Se reparares bem não é isto que diz o teu enunciado.
OBS: também estou com um problema se digito todas notas iguais ele da 0 no resultado
meu código está assim:
importjava.util.Scanner;publicclassNotaMediaPonderada{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubdoublemedia;doublenotaMaior=0;doublesomaMenor=0;Scannerteclado=newScanner(System.in);System.out.println("Digite o código do aluno");intcod=teclado.nextInt();System.out.println("Digite a primeira nota");doublenota1=teclado.nextDouble();System.out.println("Digite a segunda nota");doublenota2=teclado.nextDouble();System.out.println("Digite a terceira nota");doublenota3=teclado.nextDouble();if(nota1>nota2&¬a1>nota3){notaMaior=nota1;somaMenor=nota2+nota3;}elseif(nota2>nota1&¬a2>nota3){notaMaior=nota2;somaMenor=nota1+nota3;}elseif(nota3>nota1&¬a3>nota2){notaMaior=nota3;somaMenor=nota1+nota2;}media=((notaMaior*0.4)+(somaMenor*0.6));System.out.println("A média do aluno: |"+cod+"|"+" é: "+media);if(media>=5){System.out.println("APROVADO");}else{System.out.println("REPROVADO");}}}
S
snynder
[quote=Alexsandro Lopes]onde estão declarados os pesos?
Por que 0.6 e 0.4?
Da onde veio esses valores?
São padrão?
Não poderiam declarados com atributos?
Poderiam ser passados via console feito as notas ou declarado e inicializado como final “constante”
0.6 e 0.4 são os pesos para as notas 0.4 é o peso da maiorNota e o 0.6 é a soma dos pesos das notas menores.
media=((notaMaior*0.6)+(somaMenor*0.4));
MP = (nota1 x peso1) + (nota2 x peso2) / (peso1 +peso2)
pmlm
É só pensares um pouco. O maior número é o que é maior ou igual aos outros dois.
pmlm
snynder:
0.6 e 0.4 são os pesos para as notas 0.4 é o peso da maiorNota e o 0.6 é a soma dos pesos das notas menores.
Podes somar as notas menores mas não o peso, o peso mantém-se
5x + 7x = 12x e não 12(2x)
S
snynder
galera, cheguei a esse código, e que pelo que testei aqui está funcionando, já testei na calculadora e a principio está ok, mas queria saber se alguém tem alguma consideração a fazer, alguma melhoria ou questionamento.
ppackagesintaxe;importjava.util.Scanner;publicclassNotaMediaPonderada{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubdoubleigual=0,media,notaMaior=0,notaMenor1=0,notaMenor2=0;Scannerteclado=newScanner(System.in);System.out.println("Digite o código do aluno");intcod=teclado.nextInt();System.out.println("Digite a primeira nota");doublenota1=teclado.nextDouble();System.out.println("Digite a segunda nota");doublenota2=teclado.nextDouble();System.out.println("Digite a terceira nota");doublenota3=teclado.nextDouble();if(nota1>nota2&¬a1>nota3){notaMaior=nota1;notaMenor1=nota2;notaMenor2=nota3;}elseif(nota2>nota1&¬a2>nota3){notaMaior=nota2;notaMenor1=nota1;notaMenor2=nota3;}elseif(nota3>nota1&¬a3>nota2){notaMaior=nota3;notaMenor1=nota1;notaMenor2=nota2;}if(nota1==nota2&¬a1==nota3){igual=nota1;System.out.println("A média do aluno:|"+cod+"|"+" é: "+igual);if(igual>=5){System.out.println("APROVADO");}else{System.out.println("REPROVADO");}}else{media=((notaMaior*4)+((notaMenor1*3)+(notaMenor2*3)));media=media/10;System.out.println("A média do aluno:|"+cod+"|"+" é: "+media);if(media>=5){System.out.println("APROVADO");}else{System.out.println("REPROVADO");}}}}
pmlm
Podias ter mantido a soma das notas menores. Tinhas era de manter o factor 3 e não dobrar o factor.
media=((notaMaior*4)+(somaMenores*3))/10;
A questão dos números iguais está mal. Só funciona se as três forem iguais.
E estás a complicar o que é simples. Basta nos teus if usar >= em vez de apenas >