Subtração da 3 coluna de uma Matriz por -1

5 respostas
olivercld

Boa noite após ficar um tempo em cima desse algoritmo da matriz 3x3 cheguei a este resultado. nao sei se fiz de maneira certa, mais consegui chegar a um resultado, aceito correção dos Membros, para que possa entender melhor.

bom já de começo como enunciado pede para inicializar coloquei Random numero = new Random(); bom logo abaixo esta o código.

import java.util.Random;
import java.util.Scanner;

/**
 * Inicializar uma matriz bidimensional quadrada (3X3) do tipo inteiro, subtrair
 * a 3° Coluna dela por 1. Mostrar a matriz original e a resultante.
 * 
 * @author 
 * 
 */
public class Matriz3x3Sub {

	public static void main(String[] args) {
		int matrizA[][] = new int[3][3];
		 
		Random numero = new Random();		

		for (int l = 0; l <= 2; l++) {
			for (int c = 0; c <= 2; c++) {

			matrizA[l][c] = numero.nextInt(10);
				 
				//Scanner digite = new Scanner(System.in);
				//System.out.println("Digite valor para Matriz Linha [" + (l + 1)
					//	+ "] Coluna [" + (c + 1) + "]");
				//matrizA[l][c] = digite.nextInt();

			}
		}

		// apresentando a matriz
		System.out.println("\n Matriz original ");
		for (int l = 0; l <= 2; l++) {
			for (int c = 0; c <= 2; c++) {

				//apresenta a minha matriz original
				System.out.println("\n matriz [" + (l + 1) + "],[" + (c + 1)
						+ "] = " + matrizA[l][c]);
				

				//apresentar le cada linha e coluna ate chegar aoobjetivo que e apnas 3 coluna
				if (c == 2)// se coluna for igual a 2, quer dizer que estou na
				// terceira coluna e quero apenas os elementos da  terceira coluna
					matrizA[l][c] = matrizA[l][2] - 1;
				//matriz linha e coluna recebe ela mesma linha e coluna -1;

			}

		}

		//dois for para apresentar a matriz resultanti
		System.out.println("\nMatriz resultanti ");
		for (int l = 0; l <= 2; l++) {
			for (int c = 0; c <= 2; c++) {
				System.out.println("\n\nResultanti [" + (l + 1) + "],[" + (c + 1)
						+ "] = " + matrizA[l][c]);

			}
		}
	}
}

matrizA[l][c] = numero.nextInt(10); comecei colocando 3 e logo na linha um coluna um começava com 0, apos colocar o valor 10 nao inicializou com 0 mais seria porque e ate 10 elementos ou não ?

5 Respostas

Vingdel

Olá, olivercld!

Dei uma modificada, veja:

import java.util.Random;

/**
 * Inicializar uma matriz bidimensional quadrada (3X3) do tipo inteiro, subtrair
 * a 3° Coluna dela por 1. Mostrar a matriz original e a resultante.
 * 
 * @author 
 * 
 */
public class Matriz3x3Sub {

	public static void main(String[] args) {
		int matrizA[][] = new int[3][3];
		 
		Random numero = new Random();		

		// Matriz Inicial
		System.out.println("\nMatriz Original :");
		for (int l = 0; l <= 2; l++) {
			for (int c = 0; c <= 2; c++) {
				matrizA[l][c] = numero.nextInt(10);  // Gerando Matriz Inicial

				// Imprimindo Matriz Inicial
				System.out.print(matrizA[l][c]+" ");
				if(c == 2){
					System.out.println(""); // Pula linha ao final da linha
					matrizA[l][c] -= 1; // Subtrai 1 das 3º coluna de cada linha
				}

			}
		}

		System.out.println("\nMatriz Resultante: ");
		for (int l = 0; l <= 2; l++) {
			for (int c = 0; c <= 2; c++) {
				System.out.print(matrizA[l][c]+" ");
				if(c == 2)
					System.out.println("");
			}
		}
	}
}

Abraço!

olivercld
Caramba ficou bem menor Obrigado Vingdel eu não sabia que logo no inicio eu poderia ja gerar a matriz e dentro do mesmo for imprimi la e logo depois já fazer a sub dentro do mesmo for eu tentei fazer isso mais não deu certo.
matrizA[l][c] = numero.nextInt(10);  // Gerando Matriz Inicial 
if(c == 2){  
matrizA[l][c] -= 1;//isso aqui seria a mesma coisa que eu fiz 

matrizA[l][c] = matrizA[l][c] -1;// recebe ela mesma menos 1

//outra questão e eu  não entendi porque aqui inicia com 10 
 numero.nextInt(10); // significa que vou ter 10 elementos ou seja vai de um a dez ?
outra questão que esqueci porque precisa na hora de imprimir a resultanti verificar se coluna e = a 2 de novo
System.out.print(matrizA[l][c]+" ");  
                if(c == 2)  
                    System.out.println("");
olivercld

isso aqui numero.nextInt(10); significa que irá escolher números aleatório entre 0 e 10, se colocasse 100 iria escolher a cada vez que rodasse números de 0 a 100. estou certo disso meu caro Vingdel.

abraço!!!

Vingdel

olivercld:
isso aqui numero.nextInt(10); significa que irá escolher números aleatório entre 0 e 10, se colocasse 100 iria escolher a cada vez que rodasse números de 0 a 100. estou certo disso meu caro Vingdel.

abraço!!!

Exato, olivercld, nesse caso, os valores possíveis estão no intervalo [0; 10[, ou seja, de 0 (inclusive) a 10 (exclusive), o 10 é o limite e não entra como possibilidade.

Abraço!

olivercld

outra questão e necessário o if embaixo da impressao da matriz resultanti ? ele serve mais para que o este if ? Vingdel

System.out.print(matrizA[l][c]+" ");    
              if(c == 2)    
                  System.out.println("");
Criado 14 de outubro de 2011
Ultima resposta 15 de out. de 2011
Respostas 5
Participantes 2