[Resolvido] Matriz: não esta retornando valores da soma das diagonais

1 resposta
olivercld

Bom, mais uma vez uma de matriz no caso os metodos da diagonal principal e secundaria, não esta retornando a soma delas o que pode estar acontecendo ?

codigo:

import java.io.IOException;
import java.util.Scanner;
public class matrizestruturada {
	
	public static void main(String[] args) throws IOException {//Metodo principal
		int key;//Variavel para execução do menu
		System.out.println("Digite a dimensão da matriz:");
		Scanner entrada = new Scanner(System.in);//Leitura do tamanho que tera a mtariz
		int dimMatriz = entrada.nextInt();
  	int[][] matriz = new int[dimMatriz][dimMatriz];//Montagem da matriz
		for (int lin = 0; lin < dimMatriz; lin++) {//Monta a matriz com o tamanho dito acima
			for (int col = 0; col < dimMatriz; col++) {
				System.out.println("Digite um valor");//Entradas dos valores da matriz
				matriz[lin][col] = entrada.nextInt();//Recebe um valor e passa para o proximo 
			}
		}
	   do{//Condição para impressao do menu ate que a condicao de parada seja digitada
		System.out.println("\n ----------------MENU-------------------" +//Montagem do menu
			"\n|---------------------------------------|" +
			"\n| 1-IMPRIMIR A MATRIZ                   |" +
			"\n| 2-IMPRIMIR A TRANSPOSTA DA MATRIZ     |" +
			"\n| 3-SOMAR DIAGONAL PRINCIPAL DA MATRIZ  |" +
			"\n| 4-SOMAR DIAGONAL SECUNDARIA DA MATRIZ |" +
			"\n| 5-FINALIZAR                           |" +
			"\n|---------------------------------------|");
Scanner entrada1 = new Scanner(System.in);//Le o valor digitado referente ao menu
key = entrada1.nextInt();//Variavel recebe o valor referente ao menu
	
switch (key) {
	case 1://Caso seja digita a opcao 1
		System.out.println("MATRIZ: \n");
		imprimir(matriz);//Executa o metodo imprimir
		System.out.println("");//Nescessario para montagem da matriz 
		break;
	case 2: //Caso seja digita a opcao 2
		System.out.println("Transposta: \n");
		MatTransposta(matriz); //Executa o metodo MatTransposta
		System.out.println("");//Montagem da matriz
		break;
	case 3: //Caso seja digita a opcao 3
		System.out.println("Soma da diagonal principal da matriz: \n");
		SomaDiagonalSegundaria(matriz); //Executa o metodo SomaDiagonalPrincipal
		System.out.println("");//Montagem da Matriz
		break;
	case 4://Caso seja digitado a opcao 4
		System.out.println("Soma da diagonal segundaria da matriz: \n");
		SomaDiagonalSegundaria(matriz);//Executa o metodo SomaDiagonalSegundaria
		System.out.println("");
		break;
	case 5://Caso seja digitado a opcao 5
		System.out.println("FINALIZADO COM SUCESSO ");
		System.out.close();//Encerra o sistema e da a mensagem acima
			break;
	default://Caso seja digitado uma opcao diferente das acima
		System.out.println("Opcao Invalida \n");//Da a mensagem e pede outro digito
		break;
		}
	}while(key != 5);//Condição de parada, executa as opçoes ate que o item digitado seja 5
	}
public static void imprimir(int[][] Mat) {//Metodo imprimir
		for (int lin = 0; lin < Mat.length; lin++) {//montagem da matriz
			for (int col = 0; col < Mat.length; col++) {
				System.out.print(Mat[lin][col] + " ");//IMpressao da matriz
			}
			System.out.println();//Nescessario para montagem da matriz
		}
	}

	public int SomaDiagonalPrincipal(int[][] Mat) {//Metodo SomaDiagonalPrincipal
		int soma= 0;//Variavel soma comeca zerada
		for (int lin = 0; lin < Mat.length; lin++) {//Montagem da matriz
			for (int col = 0; col < Mat.length; col++) {
				if (lin == col) {//Sequencia para a soma da diagonal
					soma=soma+Mat[lin][col];//Na condicao acima soma o valor mais a variavel soma
				 Mat[lin][col] +=1;//Passa para a proxima casa da matriz
				}
			}
		}
		return soma;  //Retorna o valor da variavel soma que sera a soma da diagonal principal
	
	}
    public static int SomaDiagonalSegundaria (int[][] Mat){//Metodo  SomaDiagonalSegundaria 
    	int resultado = 0;//Variavel que recebera a soma
    	int col = Mat.length - 1;
    	for (int lin=0; lin < Mat.length; lin++){
    		resultado = resultado + Mat[lin][col];//Variavel recebe a soma do valor na condicao indicada
    		col --;
        	}
		return resultado;
    }
    public static void MatTransposta (int [][] Mat){//Metodo MatTransposta
      	for (int lin = 0; lin < Mat.length; lin++) {//Montagem da matriz
			for (int col = 0; col < Mat.length; col++) {
				System.out.print(Mat[col][lin] + " ");//Montagem da matriz transposta, linha vira 
				//coluna, coluna vira linha. antes mat[lin][col], depois mat [col][lin]
			}
			System.out.println();
    	}
    }
}//Fim do programa

1 Resposta

olivercld

resolvi o caso de retornar os valores da soma da diagonal P e S

public static int SomaDiagonalPrincipal(int[][] Mat) coloquei como static e ao chamar no menu ficou desa forma

  case 3: //Caso seja digita a opcao 3  
        System.out.println("Soma da diagonal principal da matriz: \n");  
         System.out.println("Soma da diagonal principal e: \n" +SomaDiagonalPrincipal(matriz); //Executa o metodo SomaDiagonalPrincipal  
        System.out.println("");//Montagem da Matriz  
        break;

da mesma forma fiz no da secundaria.

Criado 16 de novembro de 2011
Ultima resposta 18 de nov. de 2011
Respostas 1
Participantes 1