Galera… o meu professor passou o seguinte enunciado…
porém, não estou conseguindo resolver:
- Em uma escola os alunos aprovados ao final do ano letivo recebem citações de honra ao mérito pelo seu desempenho escolar. Somente recebe a citação o aluno cuja media anual for igual ou superior a 7,0. Esta media anual é obtida com base na media aritmética simples das medias bimestrais do aluno. Esta citação é concedida com base em algumas regras, a saber:
? O aluno recebe a citação ?honras pelo bom aproveitamento? quando sua media anual estiver entre 7,0 e 7,9
? O aluno recebe a citação ?honras pelo ótimo aproveitamento? quando sua media anual estiver entre 8,0 e 8,9
? O aluno recebe a citação ?honras pelo excelente aproveitamento? quando sua media anual estiver entre 9,0 e 10,0
? O aluno recebe a citação ?aluno exemplar? quando sua media anual estiver entre 9,0 e 10,0 e tiver pelo menos duas medias bimestrais iguais a 10,0
Elabore um algoritmo que leia o nome e as medias bimestrais de diversos alunos até que continua = ?N? e para cada um calcule sua media anual de aproveitamento e sua citação de honra ao mérito. Ao final este programa deverá escrever:
a) Quantos alunos obtiveram ?honras pelo bom aproveitamento?
b) Qual o percentual de alunos que obtiveram o conceito ?aluno exemplar?
Especificações sugeridas:
? double Media (double mb1, double mb2, double mb3, double mb4) ? retorna o valor da média anual do aluno
? boolean duasBimestraisDez (double mb1, double mb2, double mb3, double mb4) ? retorna true se pelo menos duas médias bimestrais forem iguais a dez
? String Citacao(double mediaAnual, boolean duasDez) ? retorna o tipo de citação devida ao aluno
olhem o que eu fiz:
import java.util.Scanner;
public class Alunos {
static int cont1;
static int cont2;
static Scanner teclado = new Scanner(System.in);
public static double Media(double m1, double m2, double m3, double m4) {
double mf = 0;
mf = (m1 + m2 + m3 + m4) / 4;
return mf;
}
public static boolean duasDez(double m1, double m2, double m3, double m4, boolean duasDez) {
int aux = 0;
if (m1 == 10) {
aux++;
}
if (m2 == 10) {
aux++;
}
if (m3 == 10) {
aux++;
}
if (m4 == 10) {
aux++;
}
if (aux >= 2) {
duasDez = true;
return duasDez;
} else {
duasDez = false;
return duasDez;
}
}
public static String Cit(double mf, boolean duasDez) {
String result = "";
if ((mf >= 7) && (mf < 8)) {
result = "honras pelo bom aproveitamento";
cont1++;
return result;
}if ((mf >= 8) && (mf < 9)) {
result = "honras pelo ótimo aproveitamento";
return result;
}
if ((mf >= 9) && (mf < 10)) {
if (duasDez == true) {
result = "Aluno exemplar";
cont2++;
return result;
} else {
result = "honras pelo excelente aproveitamento";
return result;
}
}else{
return result="Notas Insuficientes";
}
}
public static void main(String[] args) {
boolean duasDez=false;
String nome;
double m1, m2, m3, m4;
double mf;
byte opcao;
do {
mf = 0;
System.out.println("Informe o Nome do Aluno");
nome = teclado.next();
System.out.println("Informe a primeira média bimestral");
m1 = teclado.nextDouble();
System.out.println("Informe a segunda média bimestral");
m2 = teclado.nextDouble();
System.out.println("Informe a terceira média bimestral");
m3 = teclado.nextDouble();
System.out.println("Informe a quarta média bimestral");
m4 = teclado.nextDouble();
Media(m1, m2, m3, m4);
duasDez(m1, m2, m3, m4, duasDez);
Cit(mf, duasDez);
System.out.println("Deseja Continuar? \n[1]Sim \n[2]Não");
opcao = teclado.nextByte();
} while (opcao == 1);
System.out.println("Qtd alunos bom aprov : "+cont1);
System.out.println("Qtd alunos exemplares : "+cont2);
}
}
mas não está dando certo! porque?