Duvida em um Exercicio de Lógica

3 respostas
vitenho

ei pessoal poderiam ver o que há de errado com a logica de meu programa?

aí vai a questão:
Crie um programa que leia um indeterminado numero de alunos e para cada aluno leia:
a- nome;
b- idade;
c- as 8 notas do semestre;
após a leitura dos dados de cada aluno deve ser calculada a media das 8 notas. ao final da leitura de todos os alunos, devera ser calculada a media geral da turma, devera ser mostrado o nome do aluno que conseguiu a media mais alta da turma com a respectiva media e o numero de alunos que conseguiram media acima de 7,5. o sentinela do while é (nome = "");

aqui vai o meu código não deem risada!!! heehe

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class MediaTurma {

	public static void main(String[] args) throws IOException {
		BufferedReader teclado = new BufferedReader(new InputStreamReader(
				System.in));

		// variaveis

		String strNome = null, strIdade, strNota, nomeMelhorMedia = null;
		float notaAtual = 0, mediaNotasAluno = 0, contadorAlunos = 0,
		melhorMedia = 0, contAlunosMedia75 = 0, somaNotasAluno = 0, somaMediasTurma = 0;
		// inicio do laço
		System.out.println("informe o nome ( ou tecle enter para sair): ");
		strNome = teclado.readLine();

		while (!strNome.equals("")) {
			// pede idade
			System.out.println("digite sua idade: ");
			strIdade = teclado.readLine();
			// pede as 8 notas
			for (int i = 0; i < 8; i++) {
				// pede nota

				System.out.println("digite a nota: ");
				strNota = teclado.readLine();
				notaAtual = Float.parseFloat(strNota);
				// adiciona as notas para o calculador de media
				somaNotasAluno = somaNotasAluno + notaAtual;

			}
			// media das notas
			mediaNotasAluno = (somaNotasAluno / 8);
			// adiciona a media no calculador de medias
			somaMediasTurma = somaMediasTurma + mediaNotasAluno;
			// verifica se é a melhor media até agora
			if (mediaNotasAluno > melhorMedia) {
				melhorMedia = mediaNotasAluno;
				nomeMelhorMedia = strNome;
			}
			// verifica se a media está acima de 7,5
			if (mediaNotasAluno >= 7.5) {
				// incrementa o contador de notas acima de 7,5
				contAlunosMedia75++;
			}
			// incrementa o contador de alunos
			contadorAlunos++;
			// pede nome
			System.out.println("informe o nome ( ou tecle enter para sair): ");
			strNome = teclado.readLine();

		}
		System.out.println("melhor media: " + melhorMedia + " com o aluno: "
				+ nomeMelhorMedia);
		System.out
				.println("alunos que conseguiram media maior ou igual a 7.5: "
						+ contAlunosMedia75);

	}
}

se tiverem tempo por favor deem uma olhada...

grato desde já
Abraço

3 Respostas

LPJava

rpz por incrivel q pareca fiz um desse semana passada na facul veja em anexo… qualquer duvida so gritar… o seu tem uns pre-requisitos a + q o meu nao tem…

E

:idea:
Faltou só uma coisa :

Zerar a variável “somaNotasAluno”. no fim do While. Por que ele estava acumulando todas as notas então a melhor media era sempre do último.

//incluindo essa linha antes do trecho de “pedir nome” dentro do while já resolve.
somaNotasAluno = 0;

// pede nome
System.out.println("informe o nome ( ou tecle enter para sair): ");

:shock:
Eduardo

vitenho

muito obrigado pelas respostas !!!

somaNotas filha da mãe.!
hehhe

e desculpem o incômodo ae.

abraço
até mais

Criado 19 de abril de 2007
Ultima resposta 19 de abr. de 2007
Respostas 3
Participantes 3