Soma de valores das colunas de uma matriz

15 respostas
A

Consigo tomar todos os valores, tanto das linhas quanto das colunas, porém preciso somar os valores de cada coluna. Tentei de varias formas e até agora não obtive sucesso.

15 Respostas

igor_ks

da forma que vejo é fazendo dois fors, um dentro do outro.

Passa o que vc fez, q a gente ajuda no que ta errado…

DaniloZagato

posta o código que fica mais fácil de te ajudar :-o

Rodrigo_Sasaki

Bem vindo ao GUJ, André :slight_smile:

Segue umas dicas pra te ajudar a fazer o que quer.

1 - Itere pelas colunas
2 - A cada iteração de coluna, itere por todas as linhas, somando os valores, armazene o valor onde fizer sentido pra você
3 - Pronto :slight_smile:

Se isso não resolver, poste aí o código que você já fez, e a gente vê onde pode te ajudar.

E antes de postar código, por favor leia o nosso How To.
Aí você encontra links para as regras do fórum, e diversas dicas sobre como postar

igor_ks

vote Rodrigo Sasaki para moderador, sempre ajudando os iniciantes a postar da maneira correta :smiley:

Rodrigo_Sasaki

Opa :slight_smile:

Se os administradores/moderadores quiserem isso, eu topo!

A

[code]
package aula.pkg04.exercício.pkg04;

import javax.swing.*;

public class Aula04Exercício04 {

public static void main(String[] args) {

int mat[][] = new int[4][3];
int vet[] = new int[3];

System.out.println("Matriz");

for (int i = 0; i < 4; i++){
System.out.println(" ");
for (int j = 0; j < 3; j++){
String valor = JOptionPane.showInputDialog(null, "Informe o valor");
int v = Integer.parseInt(valor);
mat[i][j] = v;
System.out.print(v +" ");
}
}

int soma = 0;

for (int j = 0; j < 3; j++){
for (int i = 0; i < 4; i++){
soma = soma + mat[0][j]; //incompleto
}
}


System.out.println("soma> " +soma);

}
}

A

Pessoal, segue acima o meu código, porém como disse anteriormente, não estou conseguindo somar somente as colunas individualmente.

Rodrigo_Sasaki

Faltou fechar a tag code no final :slight_smile:

É a variável soma? se for ela, então tem coisas erradas no seu código.

você não tem que pegar o valor de mat[0][j], pois isso seria fixo, ignorando um dos loops, tem que pegar o valor de mat[i][j].

Agora lembre-se, você vai iterar uma coluna, somar os valores e atribuir à soma só que quando ele iterar a segunda coluna, você perderá o valor antigo.

DaniloZagato
[quote=andrewdd]
package aula.pkg04.exercício.pkg04;

import javax.swing.*;

public class Aula04Exercício04 {

    public static void main(String[] args) {
        
        int mat[][] = new int[4][3];
        int vet[] = new int[3];
        
        System.out.println("Matriz");
                

        
        for (int i = 0; i < 4; i++){
            System.out.println(" ");
            for (int j = 0; j < 3; j++){
                String valor = JOptionPane.showInputDialog(null, "Informe o valor");
                int v = Integer.parseInt(valor);
                mat[i][j] = v;
                System.out.print(v +" ");
            }
        }                  
       
        int soma = 0;
        
        for (int j = 0; j < 3; j++){
            for (int i = 0; i < 4; i++){
                soma = soma + mat[0][j]; //[u]troca o 0 por i[/u] 
            }  
        }       
        
        
        System.out.println("soma> " +soma);
        
    }
}
[/quote]
da uma olhada no ultimo comentário e vê se da certo.
Arthur_F_Ferreira
import javax.swing.JOptionPane;

public class Teste {

    public static void main(String[] args) {

        int mat[][] = new int[4][3];

        System.out.println("Matriz");

        for (int i = 0; i < 4; i++) {
            System.out.println(" ");
            for (int j = 0; j < 3; j++) {
                String valor = JOptionPane.showInputDialog(null, "Informe o valor");
                int v = Integer.parseInt(valor);
                mat[i][j] = v;
                System.out.print(v + " ");
            }
        }

        System.out.println(" ");
        System.out.println(" ");
        int soma;

        for (int j = 0; j < 3; j++) {
            soma = 0;
            
            for (int i = 0; i < 4; i++) {
                soma = soma + mat[i][j];
            }
            
            System.out.printf("Soma da coluna %d: %d\n", j, soma);
        }
    }
}
A

É isso, se eu fizer dentro do for, toda hora que o loop for executado, o valor irá mudar. Sobre os dois exemplos que me foram mandados, eles estão somando tudo, isso eu consegui fazer, o que eu não consigo é somar somente cada coluna indivualmente :confused:

Rodrigo_Sasaki

Você pode fazer a soma ser um array também, com o mesmo tamanho do número de colunas da sua matriz.

Então se você tem 4 colunas, terá 4 totais. Fez sentido ?

Arthur_F_Ferreira

O código que eu te mandei soma cada coluna individualmente e faz o print da soma (é só ver no console).

Caso você queira armazenar esse valor num vetor (tipo o que você crio), é só mudar:

import javax.swing.JOptionPane;

public class Aula04Exercício04 {

    public static void main(String[] args) {

        int mat[][] = new int[4][3];
        int vet[] = new int[3];

        System.out.println("Matriz");

        for (int i = 0; i < 4; i++) {
            System.out.println(" ");
            for (int j = 0; j < 3; j++) {
                String valor = JOptionPane.showInputDialog(null, "Informe o valor");
                int v = Integer.parseInt(valor);
                mat[i][j] = v;
                System.out.print(v + " ");
            }
        }

        System.out.println(" ");
        System.out.println(" ");

        int soma;

        // Loop para percorrer as colunas
        for (int j = 0; j < 3; j++) {
            soma = 0;

            // Loop para percorrer as linhas
            for (int i = 0; i < 4; i++) {
                soma = soma + mat[i][j];
            }

            // Print da soma de cada coluna
            System.out.printf("Soma da coluna %d: %d\n", j, soma);
            
            // Armazenamento da soma
            vet[j] = soma;
        }
    }
}
A

Rpz, com esse ultimo código que foi mandado, ele soma a primeira coluna e mostra o resultado, quando ele vai somar a segunda coluna, ao invés de somar somente ela, o algoritmo esta somando a coloca atual com a anterior.

A

Pessoal, segue o código abaixo de como eu realmente queria que ele executasse, seguindo a problematização.

package aula.pkg04.exercício.pkg04;

import javax.swing.*;

public class Aula04Exercício04 {

    public static void main(String[] args) {

        int mat[][] = new int[4][3];

        System.out.println("Matriz");

        for (int i = 0; i < 4; i++) {
            System.out.println(" ");
            for (int j = 0; j < 3; j++) {
                String valor = JOptionPane.showInputDialog(null, "Informe o valor");
                int v = Integer.parseInt(valor);
                mat[i][j] = v;
                System.out.print(v + " ");
            }
        }

        int soma[] = new int[3];

        for (int x = 0; x < 3; x++) {
            soma[x] = 0;
        }

        for (int j = 0; j < 3; j++) {
            for (int i = 0; i < 4; i++) {
                soma[j] = soma[j] + mat[i][j];
            }
            JOptionPane.showMessageDialog(null, "A soma da coluna " + (j + 1) +" é " + soma[j]);
        }
    }
}
Criado 20 de dezembro de 2012
Ultima resposta 21 de dez. de 2012
Respostas 15
Participantes 5