dúvida algoritmo

10 respostas
D
/*Faça uma classe em JAVA que carregue uma matriz com as notas de cinco alunos em três provas. Lembre-se que essa quantidade de alunos e provas é uma suposição e que sua classe poderia ser alterada para funcionar com números muito maiores.

Cada nota digitada deve ser validada e as notas válidas estão entre 0 e 10. Sempre que uma nota inválida for digitada uma nova digitação deve ser solicitada. 

Carregue também um vetor com o tipo de média (A ? Aritmética e P ? Ponderada). Lembre-se que cada aluno terá um tipo de média e que os tipos digitados devem ser validados e os tipos válidos são: A, a, P, p. Sempre que um tipo inválido for digitado uma nova digitação deve ser solicitada. Os pesos da média ponderada são: 2, 3 e 10.

Mostre:

a)	O número de cada aluno (nº da linha ou da coluna), a média e a situação (aprovado ou reprovado, considerando para aprovação média de no mínimo 7)
b)	A média de todos os alunos juntos em cada prova
c)	A maior nota de cada aluno e em que prova aconteceu, DESCONSIDERAR empates.
d)	A menor nota em cada prova e a que aluno pertence, CONSIDERAR empates.
*/


import java.util.*;
public class exercicio3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
     Scanner dado = new Scanner(System.in);
     
     double nota[][] = new double [5][3];
     String tipomedia[] = new String[1];
     double media = 0;
     double mediatotal = 0,medtotal = 0,medtot = 0;
     for (int i = 0; i <=4; i++) {
    	 System.out.println("\ndigite as notas do aluno: "+(i+1));
    	 for (int j = 0; j <=2; j++) {
    	 System.out.println("digite as notas da prova: "+(j+1));
    	 nota[i][j] = dado.nextDouble();
    	 while(nota[i][j] > 10 || nota[i][j] < 0){
     		System.out.println("nota inválida! Digite novamente");
     	      nota[i][j] = dado.nextDouble();
     }
    	 }
		 
    	for (int j = 0; j < tipomedia.length; j++) {
			System.out.println("digite o tipo da média A- aritmética P- Ponderada");
			tipomedia[j] = dado.next();
			  while (!(tipomedia[j].equalsIgnoreCase("p") || tipomedia[j].equalsIgnoreCase("a"))) {  
                  System.out.println("média inválida! digite novamente.");  
                  tipomedia[j] = dado.next();  
    	}
			  if(tipomedia[j].equalsIgnoreCase("p")){
				  media = (nota[i][0]*2+nota[i][1]*3+ nota[i][2]*10)/15;
				  System.out.println("o tipo de média foi ponderada a média é "+media);
			}
			 if(tipomedia[j].equalsIgnoreCase("a")){
				  media = (nota[i][0]+nota[i][1]+nota[i][2])/3;
				  System.out.println("o tipo de média foi aritmética a média é "+media);
			  }
			 if(media >= 7){
				 System.out.println("o aluno está APROVADO");
			 }
			 if(media < 7){
				 System.out.println("o aluno está REPROVADO");
			 }
}
         
}
    for (int i = 0; i <=4; i++) {
     mediatotal += (nota[i][0])/5;
     System.out.println("\na média foi "+mediatotal+" na prova 1");
     medtotal += (nota[i][1])/5;
     System.out.println("\na média foi "+medtotal+" na prova 2");
     medtot += (nota[i][2])/5;
     System.out.println("\na média foi "+medtot+" na prova 3");
	}
	}
}

eu fiz a letra b) alguém pode me ajudar a fazer de um jeito mais prático obrigado!

10 Respostas

A

esse seu ultimo for ta errado,

vc vai ter que fazer um for que faça o seguinte
vai passar por todos os alunos e somar as notas da mesma prova e qdo finalizar o for fazer a media

e com esse for que vc vai fazer, vc consegue resolve a letra C e D… :smiley:

t+

D

como eu somo as notas da mesma prova?

D

me mostra o q esta errado no for ali?

A

vo te ajudar no seu exercio e vc vai ter que falar para seu professor dividar a nota comigo…rs

double mediatotal[] = new double[3];
		for (int i = 0; i <= 4; i++) {
			mediatotal[0] += (nota[i][0]);
			mediatotal[1] += (nota[i][1]);
			mediatotal[2] += (nota[i][2]);
		}
		
		System.out.println("Media na prova 1"+mediatotal[0]/5);
		System.out.println("Media na prova 2"+mediatotal[1]/5);
		System.out.println("Media na prova 3"+mediatotal[2]/5);

t+

D

eu estou precisando d ajuda pq ta dificil me da um exemplo naquele for q esta errado como deveria ficar se puder me ajudar eu agradeço obrigado!

D

obrigadoo eu vou tenta fazer o maior e o menor agora e o empate rs

D

no mesmo0 for eu faço o maior e o menor??

D

me ajuda nessas duas ultimas letras?

/*Faça uma classe em JAVA que carregue uma matriz com as notas de cinco alunos em três provas. Lembre-se que essa quantidade de alunos e provas é uma suposição e que sua classe poderia ser alterada para funcionar com números muito maiores.

Cada nota digitada deve ser validada e as notas válidas estão entre 0 e 10. Sempre que uma nota inválida for digitada uma nova digitação deve ser solicitada. 

Carregue também um vetor com o tipo de média (A ? Aritmética e P ? Ponderada). Lembre-se que cada aluno terá um tipo de média e que os tipos digitados devem ser validados e os tipos válidos são: A, a, P, p. Sempre que um tipo inválido for digitado uma nova digitação deve ser solicitada. Os pesos da média ponderada são: 2, 3 e 10.

Mostre:

a)	O número de cada aluno (nº da linha ou da coluna), a média e a situação (aprovado ou reprovado, considerando para aprovação média de no mínimo 7)
b)	A média de todos os alunos juntos em cada prova
c)	A maior nota de cada aluno e em que prova aconteceu, DESCONSIDERAR empates.
d)	A menor nota em cada prova e a que aluno pertence, CONSIDERAR empates.
*/


import java.util.*;
public class exercicio3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
     Scanner dado = new Scanner(System.in);
     
     double nota[][] = new double [5][3];
     double mediatotal[] = new double[3];  
     String tipomedia[] = new String[1];
     double media = 0;
     double maior = 0,menor = 0,np = 0;
     for (int i = 0; i <=4; i++) {
    	 System.out.println("\ndigite as notas do aluno: "+(i+1));
    	 for (int j = 0; j <=2; j++) {
    	 System.out.println("digite as notas da prova: "+(j+1));
    	 nota[i][j] = dado.nextDouble();
    	 while(nota[i][j] > 10 || nota[i][j] < 0){
     		System.out.println("nota inválida! Digite novamente");
     	      nota[i][j] = dado.nextDouble();
     }
    	 }
		 
    	for (int j = 0; j < tipomedia.length; j++) {
			System.out.println("digite o tipo da média A- aritmética P- Ponderada");
			tipomedia[j] = dado.next();
			  while (!(tipomedia[j].equalsIgnoreCase("p") || tipomedia[j].equalsIgnoreCase("a"))) {  
                  System.out.println("média inválida! digite novamente.");  
                  tipomedia[j] = dado.next();  
    	}
			  if(tipomedia[j].equalsIgnoreCase("p")){
				  media = (nota[i][0]*2+nota[i][1]*3+ nota[i][2]*10)/15;
				  System.out.println("o tipo de média foi ponderada a média é "+media);
			}
			 if(tipomedia[j].equalsIgnoreCase("a")){
				  media = (nota[i][0]+nota[i][1]+nota[i][2])/3;
				  System.out.println("o tipo de média foi aritmética a média é "+media);
			  }
			 if(media >= 7){
				 System.out.println("o aluno está APROVADO");
			 }
			 if(media < 7){
				 System.out.println("o aluno está REPROVADO");
			 }
    	}
			
		 }  
     for (int i = 0; i <= 4; i++) {  
         mediatotal[0] += (nota[i][0]);  
         mediatotal[1] += (nota[i][1]);  
         mediatotal[2] += (nota[i][2]);  
     }
       
     System.out.println("\nMedia na prova 1 "+mediatotal[0]/5);  
     System.out.println("Media na prova 2 "+mediatotal[1]/5);  
     System.out.println("Media na prova 3 "+mediatotal[2]/5);  


	for (int i=0;i<5;i++)
	{
	  maior = nota[i][0];
	  np=0;
		for (int j=0;j<3;j++)
		{
			if (nota[i][j] > maior)
			{
				maior = nota[i][j];
				np=j;
			}
			
		}	
		System.out.println("\nMaior nota do " +(i+1)+ "º Aluno = " +maior );
		System.out.println(" Na prova  "+ (np+1));
	}

	//letra d

	for (int j=0;j<5;j++)
	{
		menor = nota[0][j];
	  np=0;
		for (int i=0;i<5;i++)
			{
			if (nota[i][j] < menor)
			{
				menor = nota[i][j];
				np=i;
			}if (menor == nota[i][j]) { 
				System.out.println("empatou com " + (i + 1));  
		}	
		System.out.println("\nMenor nota na " +(j+1)+ "ª Prova = " +menor );
		System.out.println(" Do aluno  "+ (np+1));
	}
	
}
	}
}
A

cara,

eu acabei esse seu exercicio, mas não comentei o codigo para que vc estude ele e ver o que está acontecendo.

/*Faça uma classe em JAVA que carregue uma matriz com as notas de cinco alunos em três provas. Lembre-se que essa quantidade de alunos e provas é uma suposição e que sua classe poderia ser alterada para funcionar com números muito maiores.

 Cada nota digitada deve ser validada e as notas válidas estão entre 0 e 10. Sempre que uma nota inválida for digitada uma nova digitação deve ser solicitada. 

 Carregue também um vetor com o tipo de média (A ? Aritmética e P ? Ponderada). Lembre-se que cada aluno terá um tipo de média e que os tipos digitados devem ser validados e os tipos válidos são: A, a, P, p. Sempre que um tipo inválido for digitado uma nova digitação deve ser solicitada. Os pesos da média ponderada são: 2, 3 e 10.

 Mostre:

 a)	O número de cada aluno (nº da linha ou da coluna), a média e a situação (aprovado ou reprovado, considerando para aprovação média de no mínimo 7)
 b)	A média de todos os alunos juntos em cada prova
 c)	A maior nota de cada aluno e em que prova aconteceu, DESCONSIDERAR empates.
 d)	A menor nota em cada prova e a que aluno pertence, CONSIDERAR empates.
 */

import java.util.*;

public class exercicio3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner dado = new Scanner(System.in);

		double nota[][] = new double[5][3];
		String tipomedia[] = new String[1];
		double media = 0;
		for (int i = 0; i <= 4; i++) {
			System.out.println("\ndigite as notas do aluno: " + (i + 1));
			for (int j = 0; j <= 2; j++) {
				System.out.println("digite as notas da prova: " + (j + 1));
				nota[i][j] = dado.nextDouble();
				while (nota[i][j] > 10 || nota[i][j] < 0) {
					System.out.println("nota inválida! Digite novamente");
					nota[i][j] = dado.nextDouble();
				}
			}

			for (int j = 0; j < tipomedia.length; j++) {
				System.out.println("digite o tipo da média A- aritmética P- Ponderada");
				tipomedia[j] = dado.next();
				while (!(tipomedia[j].equalsIgnoreCase("p") || tipomedia[j].equalsIgnoreCase("a"))) {
					System.out.println("média inválida! digite novamente.");
					tipomedia[j] = dado.next();
				}
				if (tipomedia[j].equalsIgnoreCase("p")) {
					media = (nota[i][0] * 2 + nota[i][1] * 3 + nota[i][2] * 10) / 15;
					System.out.println("o tipo de média foi ponderada a média é "+ media);
				}else if (tipomedia[j].equalsIgnoreCase("a")) {
					media = (nota[i][0] + nota[i][1] + nota[i][2]) / 3;
					System.out.println("o tipo de média foi aritmética a média é "+ media);
				}
				
				if (media >= 7) {
					System.out.println("o aluno está APROVADO");
				}else {
					System.out.println("o aluno está REPROVADO");
				}
			}
		}
		
		double mediatotal[] = new double[3];
		
		Object maiorNotaAluno[][] = new Object[5][1];
		double maiorNota[][];
		
		Object menorNota[] = new Object[3];
		Object menorNotaProva1[][] = new Object[5][2];
		Object menorNotaProva2[][] = new Object[5][2];
		Object menorNotaProva3[][] = new Object[5][2];
		
		int contadorMenorProva1 = 0;
		int contadorMenorProva2 = 0;
		int contadorMenorProva3 = 0;
		
		double menorNota1 = nota[0][0];
		double menorNota2 = nota[0][1];
		double menorNota3 = nota[0][2];
		
		for (int i = 0; i <= 4; i++) {
			maiorNota = new double[1][2];
			
			mediatotal[0] += nota[i][0];
			mediatotal[1] += nota[i][1];
			mediatotal[2] += nota[i][2];
			
			if(maiorNota[0][1] < nota[i][0]){
				maiorNota[0][0] = 1;
				maiorNota[0][1] = nota[i][0];
				
				maiorNotaAluno[i][0] = maiorNota;
			}
			
			if(maiorNota[0][1] < nota[i][1]){
				maiorNota[0][0] = 2;
				maiorNota[0][1] = nota[i][1];
				
				maiorNotaAluno[i][0] = maiorNota;
			}
			
			if(maiorNota[0][1] < nota[i][2]){
				maiorNota[0][0] = 3;
				maiorNota[0][1] = nota[i][2];
				
				maiorNotaAluno[i][0] = maiorNota;
			}
			
			if(menorNota1 >= nota[i][0]){
				menorNota1 = nota[i][0];
			}
			
			if(menorNota2 >= nota[i][1]){
				menorNota2 = nota[i][1];
			}
			
			if(menorNota3 >= nota[i][2]){
				menorNota3 = nota[i][2];
			}
		}
		
		for (int i = 0; i <= 4; i++) {
			if(menorNota1 == nota[i][0]){
				menorNotaProva1[contadorMenorProva1][0] = (i+1);
				menorNotaProva1[contadorMenorProva1++][1] = nota[i][0];
				menorNota[0] = menorNotaProva1;
			}
			
			if(menorNota2 == nota[i][1]){
				menorNotaProva2[contadorMenorProva2][0] = (i+1);
				menorNotaProva2[contadorMenorProva2++][1] = nota[i][1];
				menorNota[1] = menorNotaProva2;
			}
			
			if(menorNota3 == nota[i][2]){
				menorNotaProva3[contadorMenorProva3][0] = (i+1);
				menorNotaProva3[contadorMenorProva3++][1] = nota[i][2];
				menorNota[2] = menorNotaProva3;
			}
		}
		
		System.out.println("Media na prova 1 = "+mediatotal[0]/5);
		System.out.println("Media na prova 2 = "+mediatotal[1]/5);
		System.out.println("Media na prova 3 = "+mediatotal[2]/5);
		
		System.out.println("");
		
		for (int i = 0; i <= 4; i++) {
			maiorNota = (double[][]) maiorNotaAluno[i][0];
			System.out.println("Maior nota aluno "+(i+1)+" é "+maiorNota[0][1]+" na prova "+ (int)maiorNota[0][0]);
		}
		
		System.out.println("");
		
		for(int i = 0; i <= 2; i++){
			Object menorNotaProva[][] = (Object[][])menorNota[i];
			for(int j = 0; j <= 4; j++){
				if(menorNotaProva[j][0] != null){
					System.out.println("Menor nota prova "+(i+1)+" é "+menorNotaProva[j][1]+" do aluno "+menorNotaProva[j][0]);
				}
			}
		}
	}
}

t+

D

obrigadooo eu vou tentar entender o q vc fezz brigadao!

Criado 26 de setembro de 2011
Ultima resposta 27 de set. de 2011
Respostas 10
Participantes 2