Logica de programacao

Ola Gente boa Tarde estou com uma duvida de um algoritmo como faco para fazer um calculo da nota media ponderada segue a formula mp = n1 * 1 + n2 * 2 / (1+2) sendo que se a nota do aluno for igual a 0 o algoritmo nao deve ler a nota, e o mesmo so deverá executar o calculo cujo a nota foi maior que zero eu fiz a formula com o if certinho colocando as duas notas agora como eu faço para o algoritmo para nao ler a nota e ainda assim calcular a nota que for atribuída!

desde ja muito grato!!!

Uma forma fácil de você entender a lógica que deve ser feita é criar vários casos de teste do seu programa.

Vamos dar os seguintes exemplos, que você deve resolver só com lápis e papel (talvez uma calculadora, quem sabe…)

a) O aluno tem nota 1 = 10 e nota 2 = 9. Qual é a nota média ponderada?

b) O aluno tem nota 1 = 0 e nota 2 = 9. Qual é a nota média ponderada?

c) O aluno tem nota 1 = 10 e nota 2 = 0. Qual é a nota média ponderada?

d) O aluno tem nota 1 = 0 e nota 2 = 0. Qual é a nota média ponderada?

Uma vez você considerando esses 4 casos, veja qual é a lógica que você precisa fazer para transformar em um programa.

Vou dar até a resposta para você conferir depois :

a) 9.3333
b) 9
c) 10
d) 0

Note que nos casos b) e c), na verdade você não usa a fórmula que lhe passaram :slight_smile:

Um dos jeitos:

import java.util.Scanner*;

public static void main(String[] args){

Scanner entrada = new Scanner(System.in);

int nota1;
int nota2;
int média;

System.out.println("Insira a nota 1:");
nota1 = entrada.nextInt();

System.out.println("Insira a nota 2:");
nota2 = entrada.nextInt();

média = ((nota1*1) + (nota2*2))/(1+2);

if(nota1 == 0){
média = nota2;
} 
if(nota2 == 0){
média = nota1;
}
}
System.out.println(média);

O exemplo postado pelo lcruz funciona bem mas eu faria algumas modificações:

public static void main(String[] args){  
// Variáveis do tipo double para poder lançar notas com valores decimais
double nota1;  
double nota2;  
double media;  
Scanner sc = new Scanner(System.in);   

System.out.println("Insira a nota 1:");  
nota1 = sc.nextDouble();  
  
System.out.println("Insira a nota 2:");  
nota2 = sc.nextDouble();  

// if...else... para que o sistema não tenha q testar 2 condições depois de calcular a média
if (nota1 == 0) {
    media = nota2;
} else if (nota2 == 0) {
    media = nota1;
} else {
    media = ((nota1*1) + (nota2*2)) / (1+2);
}
   
System.out.println(media);
}

[quote=fabiocortolan]O exemplo postado pelo lcruz funciona bem mas eu faria algumas modificações:
[/quote]

Mas na verdade o jeito que eu fiz é “nanomicamente” mais rápido.