Olá pessoa! to com um probleminha aki, voltei a fazer exercicios de matiz pra dar uma treinada, só q acho q esqueci mesmo…
Tenho uma matriz q recebe 3 notas de 3 alunos, tenho q mostrar a média das notas deles,e não estou conseguindo calcular…
esse metodo recebe uma matriz double como parametro…Se puderem dar uam força agradeço!
public static double calcularMedia(double[][] notas, int i) {
int j=0;
double media=0,soma=0;
for(i=0;i<3;i++){
soma=0;media=0;
for(j=0;j<3;j++){
soma=soma+notas[i][j];
media= soma/3;
}
}
System.out.println(soma);
System.out.println(media);
return media;
}
Você quer a média de nota individual por aluno ou a média das notas dos três?
Em todo caso, você não pode fazer o cálculo da média dentro do for mais interno (linha 9 do seu código), porque precisa somar as três notas antes de calcular a média.
então, é por aluno mesmo, valeu a resposta! mas acho q tem algo errado, tah mostrando as medias e as somas iguais de todos!
veja meu codigo completo: eu digitei 8 7 6 8 7 6 8 7 6, de maneira q sempre o aluno vai ter a mesma nota nas 3 provas. a soma sempre dá 21 e a media 7…
public static void main(String[] args) {
int i=0;
int ras[]=obterNumerosDeRa();
double [][] notas= obterNotasNasProvas();
for(i=0;i<ras.length;i++){
double media=calcularMedia(notas,i);
//int media=6;
System.out.println(ras[i]);
if(media>=7){
System.out.println("Aprovado");
}else if(media>=4){
System.out.println("Exame");
}else{
System.out.println("Reprovado");
}
}
}
public static int [] obterNumerosDeRa() {
int tam=3;
Scanner e=new Scanner(System.in);
int ra[]= new int [tam];
for(int i=0;i<tam;i++){
System.out.println("Digite o "+(i+1)+"º RA: ");
ra[i]=e.nextInt();
}
return ra;
}
public static double[][] obterNotasNasProvas() {
double nots [][]= new double [3][3];
int i=0,j=0;
Scanner e = new Scanner(System.in);
for(i=0;i<nots.length;i++){
for(j=0;j<nots.length;j++){
System.out.println("Digite a "+(i+1)+"º nota do "+(j+1)+"º aluno: ");
nots[i][j]=e.nextDouble();
}
}
return nots;
}
public static double calcularMedia(double[][] notas, int i) {
int j=0;
double media=0,soma=0;
for(i=0;i<3;i++){
soma=0;media=0;
for(j=0;j<3;j++){
soma=soma+notas[i][j];
}
media = soma/3;
}
System.out.println(soma);
System.out.println(media);
return media;
}
Está meio confuso exibir a média em um método (calcularMedia) e a situação (aprovado ou não) em outro, mas vamos lá.
Seu método calcular média deve receber as notas de um aluno só, já que ele deve retornar a média somente de um aluno. Por isso, passe o vetor somente com as posições que interessam:
[code]public static void main(String[] args) {
int i=0;
int ras[]=obterNumerosDeRa();
double [][] notas= obterNotasNasProvas();
for(i=0;i<ras.length;i++){
double media=calcularMedia(notas[i]); // note a diferença aqui: só passo o vetor de notas de um aluno, um vetor simples, não uma matriz
System.out.println("Aluno RA: " + ras[i] + "\n");
if(media>=7){
System.out.println("Aprovado : media = " + media); // imprimindo a média para ficar mais claro
}else if(media>=4){
System.out.println("Exame : media = " + media); // imprimindo a média para ficar mais claro
}else{
System.out.println("Reprovado : media = " + media); // imprimindo a média para ficar mais claro
}
}
}
public static int [] obterNumerosDeRa() {
int tam=3;
Scanner e=new Scanner(System.in);
int ra[]= new int [tam];
for(int i=0;i<tam;i++){
System.out.println("Digite o "+(i+1)+"º RA: ");
ra[i]=e.nextInt();
}
return ra;
}
public static double[][] obterNotasNasProvas() {
double nots [][]= new double [3][3];
int i=0,j=0;
Scanner e = new Scanner(System.in);
for(i=0;i<nots.length;i++){
for(j=0;j<nots.length;j++){
System.out.println("Digite a "+(i+1)+"º nota do "+(j+1)+"º aluno: ");
nots[j][i]=e.nextDouble(); // inverti aqui, pois fica mais fácil de calcular depois passando o vetor inteiro: antes era nots[i][j]=e.nextDouble();
}
}
return nots;
}
public static double calcularMedia(double[] notas) {
double media=0,soma=0;
// note a diferença daqui pra baixo
for(int i=0;i<3;i++){
soma = soma + notas[i];
}
media = soma/3;
System.out.println(soma);
//System.out.println(media);
return media;
}[/code]
Então TerraSkilll, eu preciso calcular a média dos 3 alunos,e mostrar a situação dos 3. no main vai mostrar : ra --> aprovado e a média…
fikei confuso…
OObrigado! se ainda puder ajudar…
[quote=nathanRayden]Então TerraSkilll, eu preciso calcular a média dos 3 alunos,e mostrar a situação dos 3. no main vai mostrar : ra --> aprovado e a média…
fikei confuso…
OObrigado! se ainda puder ajudar…[/quote]
Sou novato(em java) também, não entendi 100% o que vc quer, mas vou tentar.
Aproveitando o codigo do TerraSkilll:
public static void main(String[] args) {
int i = 0;
int ras[] = obterNumerosDeRa();
double[][] notas = obterNotasNasProvas();
for (i = 0; i < ras.length; i++) {
double[] mediaSoma = calcularMediaSoma(notas[i]);
double media = mediaSoma[0];
double soma = mediaSoma[1];
if (media >= 7) {
System.out.println("RA: " + ras[i] + "-- Aprovado , média = "
+ media+", soma = "+soma);
} else if (media >= 4) {
System.out.println("RA: " + ras[i] + "-- Exame , média = "
+ media+", soma = "+soma);
} else {
System.out.println("RA: " + ras[i] + "-- Reprovado , média = "
+ media+", soma = "+soma);
}
}
}
public static int[] obterNumerosDeRa() {
int tam = 3;
Scanner e = new Scanner(System.in);
int ra[] = new int[tam];
for (int i = 0; i < tam; i++) {
System.out.println("Digite o " + (i + 1) + "º RA: ");
ra[i] = e.nextInt();
}
return ra;
}
public static double[][] obterNotasNasProvas() {
double nots[][] = new double[3][3];
int i = 0, j = 0;
Scanner e = new Scanner(System.in);
for (i = 0; i < nots.length; i++) {
for (j = 0; j < nots.length; j++) {
System.out.println("Digite a " + (i + 1) + "º nota do "
+ (j + 1) + "º aluno: ");
nots[j][i] = e.nextDouble();
}
}
return nots;
}
public static double[] calcularMediaSoma(double[] notas) {
double media = 0, soma = 0;
double[] valores = new double[2];
for (int i = 0; i < 3; i++) {
soma = soma + notas[i];
}
media = soma / 3;
valores[0] = media;
valores[1] = soma;
return valores;
}
então brother, do jeito que vc fez funciona perfeitamente!! o problema é que tenho q usar essa bendita matriz…vou dar uma tentada aki… o prblema é qndo uso matriz ele parece que pega a soma de uma coluna só, ou só de um aluno… tem que ter uma maneira de fazer isso com matriz…
Você executou o código que passei e o do asousaj? Porque, se o que fizemos faz o que você quer, então não entendi o que você precisa. Os dois códigos usam a matriz, então qual a dificuldade?
sim sim, executei sim, so que no exercio pede que meu Main esteja como eu mandei…
e nao consigo fazer isso recebendo notas[], ou notas[][], e mandar a media no return. aé executa, mas manda valores iguais pra todo mundo…
Brother vamos aos fatos
Ter saída "RA -> aprovado - Média " como vc disse e[color=red] sem alterar uma linha da sua MAIN[/color] , infelizmente eu não vejo como. Posso estar errado é claro.
[size=18]
Acho que esse agora te atende, testa ai e responde, tinha uma falha no metodo da média q vc testou[/size]
public static void main(String[] args) {
int i = 0;
int ras[] = obterNumerosDeRa();
double[][] notas = obterNotasNasProvas();
for (i = 0; i < ras.length; i++) {
double media = calcularMedia(notas, i);
// int media=6;
System.out.println(ras[i]);
if (media >= 7) {
System.out.println("Aprovado");
} else if (media >= 4) {
System.out.println("Exame");
} else {
System.out.println("Reprovado");
}
}
}
public static int[] obterNumerosDeRa() {
int tam = 3;
Scanner e = new Scanner(System.in);
int ra[] = new int[tam];
for (int i = 0; i < tam; i++) {
System.out.println("Digite o " + (i + 1) + "º RA: ");
ra[i] = e.nextInt();
}
return ra;
}
public static double[][] obterNotasNasProvas() {
double nots[][] = new double[3][3];
int i = 0, j = 0;
Scanner e = new Scanner(System.in);
for (i = 0; i < nots.length; i++) {
for (j = 0; j < nots.length; j++) {
System.out.println("Digite a " + (i + 1) + "º nota do "
+ (j + 1) + "º aluno: ");
nots[i][j] = e.nextDouble();
}
}
return nots;
}
public static double calcularMedia(double[][] notas, int i) {
double media = 0, soma = 0;
for (int j = 0; j < 3; j++) {
soma = soma + notas[j][i];
}
media = soma / 3;
System.out.println("\n\nSoma: " + soma);
System.out.println("Média: " + media);
return media;
}
Obrigado asousaj e TerraSkilll pela força! asousaj, esse ultimo funcionou certinho!!! se não fosse tão longe eu pagava uma cerva pra nos !!
Eternamente grato! abraço!