Alguém me poderia indicar uma maneira de obter a soma de cada linha e de cada coluna de uma matriz em java? Sei que tenho que utilisar uma variavel auxiliar para a soma. Mas até agora só tou conseguindo percorrer e mostrar o conteudo da matriz....
if(linha == 0)
soma = M[i][j];
Você consegue somar a primeira linha da matriz.
Bom, aí ta a dica.
GabrielCardelli
Pensei em responder isso.
Mais imagina o cara ter que somar
30 linhas de uma matriz? poe ai os ifs.
Talvez você possa ao msm tempo que executa
Você vai somando e ao final de cada linha COM UM IF você zera a variavel
tpw (finalLine == ex.length());
Abc
M
maciell
Por isso eu disse que foi só uma dica.
Lavieri
conciderando o tamanho de "j" uma constante em uma matriz[i][j], vc pode fazer
int[]somaI=newint[matriz.length];int[]somaJ=newint[matriz[0].length];for(inti=0;i<matriz.length;i++){for(intj=0;i<matriz.length;j++){somaI[i]+=matriz[i][j];somaJ[j]+=matriz[i][j];}}for(inti=0;i<somaI.length;i++)System.out.println("Soma da linha "+i+": "+soma[i]);for(intj=0;j<somaJ.length;j++)System.out.println("Soma da coluna "+j+": "+soma[j]);
caso a quantidade de linhas colunas seja variável de uma linha pra outra, vc poderá usar Collection, ou usar a rotina abaixo para encontrar o numero maximo de colunas da matriz
dá uma olhada nessa classe que eu fiz, tem várias operações entre matrizes.
/**@author Gerson da Silva Lima * e-mail: [email removido] * */publicclassMatriz{//Tipo matrizprivateintmatriz[][];//Contrutor que cria uma matriz com x colunas e y linhas,//com valor 0 para cada posição;publicMatriz(intcols,introws){this.matriz=newint[cols][rows];}//Contrutor que cria uma matriz a partir de uma outra passada//como parâmetropublicMatriz(intmatriz[][]){this.matriz=matriz;}//Método que recebe uma matriz como parâmetro, soma com a matriz que o chamou//e retorna uma matriz resultadopublicMatrizsoma(Matrizm){if(verificaSomaSubtracao(m)){Matrizresultado=newMatriz(this.matriz.length,this.matriz[0].length);for(intl=0;l<this.matriz.length;l++){for(intc=0;c<this.matriz[0].length;c++){resultado.matriz[l][c]=this.matriz[l][c]+m.matriz[l][c];}}returnresultado;}else{System.out.println("Imposível fazer operação entre as matrizes!");returnnull;}}//Método que recebe uma matriz como parâmetro, subtrai com a matriz que o chamou//e retorna uma matriz resultadopublicMatrizsubtrai(Matrizm){if(verificaSomaSubtracao(m)){Matrizresultado=newMatriz(this.matriz.length,this.matriz[0].length);for(intl=0;l<this.matriz.length;l++){for(intc=0;c<this.matriz[0].length;c++){resultado.matriz[l][c]=this.matriz[l][c]-m.matriz[l][c];}}returnresultado;}else{System.out.println("Imposível fazer operação entre as matrizes!");returnnull;}}//Método que recebe uma matriz como parâmetro, multiplica com a matriz que o chamou//e retorna uma matriz resultadopublicMatrizmultiplicaPorOutraMatriz(Matrizm){if(verificarMultiplicacao(m)){Matrizresultado=newMatriz(this.matriz.length,m.matriz[0].length);for(intlr=0;lr<this.matriz.length;lr++){for(intlc=0;lc<this.matriz.length;lc++){for(intc=0;c<this.matriz[0].length;c++){resultado.matriz[lc][lr]+=(this.matriz[lc][c]*m.matriz[c][lr]);}}}returnresultado;}else{System.out.println("Imposível fazer operação entre as matrizes!");returnnull;}}//Método que recebe um escalar como parâmetro e multiplica-o com a matriz que o chamou//e retorna uma matriz resultadopublicMatrizmultiplicaPorEscalar(intescalar){Matrizresultado=newMatriz(this.matriz.length,this.matriz[0].length);for(intl=0;l<this.matriz.length;l++){for(intc=0;c<this.matriz[0].length;c++){resultado.matriz[l][c]=this.matriz[l][c]*escalar;}}returnresultado;}//Verifica se é possível fazer soma e subtraçãopublicbooleanverificaSomaSubtracao(Matrizm){returnthis.matriz.length==m.matriz.length&&this.matriz[0].length==m.matriz[0].length;}//Verifica se é possível fazer multiplicaçãopublicbooleanverificarMultiplicacao(Matrizm){returnthis.matriz.length==m.matriz[0].length&&this.matriz[0].length==m.matriz.length;}//método que imprime a matrizpublicvoidimprime(){for(intl=0;l<this.matriz.length;l++){for(intc=0;c<this.matriz[0].length;c++){System.out.print(this.matriz[l][c]+"\t");}System.out.println();}System.out.print("\n\n");}publicstaticvoidmain(String[]args){//Inteiro escalarintescalar=3;//Matrizes com três linhas e três colunasMatrizmat1=newMatriz(newint[][]{{1,2,3},{4,5,6},{7,8,9}});Matrizmat2=newMatriz(newint[][]{{9,8,7},{6,5,4},{3,2,1}});//Matrizes 3x2 e 2x3Matrizmat3=newMatriz(newint[][]{{1,2,3},{4,5,6}});Matrizmat4=newMatriz(newint[][]{{1,2},{4,5},{7,8}});//Teste de SomaSystem.out.println("Matriz 1:");mat1.imprime();System.out.println("Matriz 2:");mat2.imprime();System.out.println("Matriz 1 + Matriz 2");mat1.soma(mat2).imprime();//Teste de SubtraçãoSystem.out.println("Matriz 1:");mat1.imprime();System.out.println("Matriz 2:");mat2.imprime();System.out.println("Matriz 1 - Matriz 2");mat1.subtrai(mat2).imprime();//Teste de MultiplicaçãoSystem.out.println("Matriz 3:");mat3.imprime();System.out.println("Matriz 4:");mat4.imprime();System.out.println("Matriz 3 x Matriz 4");mat3.multiplicaPorOutraMatriz(mat4).imprime();//Teste de Multiplicação por um escalarSystem.out.println("Matriz 1:");mat1.imprime();System.out.println("Escalar: "+escalar);System.out.println("Matriz 1 x "+escalar);mat1.multiplicaPorEscalar(escalar).imprime();System.out.println("Matriz 3:");mat3.imprime();System.out.println("Escalar: "+escalar);System.out.println("Matriz 3 x "+escalar);mat3.multiplicaPorEscalar(escalar).imprime();}}