Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Cuadro{
- int pivote; //La cantidad que debe sumar todas las filas y diagonales
- int n; //dimension de la matriz nxn
- int [][] matriz; //cuadro magico
- public static void main(String [] args){
- new Cuadro().playGame();
- }
- public void playGame(){
- n = tamaniomatriz();//Definimos el tamanio del cuadro magico
- matriz = pedirDatos(n);//Rellenamos la matriz
- mostrarMatrizYSuma(matriz);
- pivote = sumaFila(0); //Esto es arbitrario, puesto que todos deben sumar lo mismo
- if (SumanColumnsIgual() && SumanFilasIgual() && SumanDiagonalsIgual() ){
- System.out.println("Juego Terminado con Exito");
- }else System.out.println("Error: No suman igual o ha repetido numeros -.-");
- }
- private int tamaniomatriz(){
- System.out.print("Ingrese Tamaños de la matriz:\t");
- Scanner scan = new Scanner(System.in);
- int rtn = scan.nextInt(); //Definimos el tamaño de la matriz nxn
- return rtn;
- }
- //@params n es la dimension de la matriz
- private int[][] pedirDatos(int n){
- String line = new String();
- int [][] matrizcompleta = new int[n][n];
- Scanner scan = new Scanner(System.in);
- scan = new Scanner(System.in);
- for (int i = 0; i<n; i++){
- for (int j = 0; j<n; j++){
- System.out.print("Ingrese valor" + "[" + i +"]"+"["+ j +"] :\t");
- int valor = scan.nextInt(); //pedimos el dato
- matrizcompleta[i][j]= valor;
- }
- }
- return matrizcompleta;
- }
- private boolean SumanFilasIgual(){
- for (int k = 0; k<n; k++){
- //todos debes sumar lo mismo que el pivote
- //Si alguno suma menos es que ya no es magico
- if (sumaFila(k)!=pivote){
- return false;
- }
- }
- return true;
- }
- private boolean SumanColumnsIgual(){
- for (int k = 0; k<n; k++){
- //todos debes sumar lo mismo que el pivote
- //Si alguno suma menos es que ya no es magico
- if (sumaColumna(k)!=pivote){
- return false;
- }
- }
- return true;
- }
- private boolean SumanDiagonalsIgual(){
- if (sumaDiagonalIzquierda()==pivote && sumaDiagonalDerecha()==pivote){
- return true;
- }else { return false;}
- }
- //Metodos para operaciones del cuadro magico
- private int sumaColumna(int i){
- if(i>=0 & matriz!=null){
- int suma = 0;
- for (int j = 0; j<n; j++){
- suma = matriz[j][i] + suma;
- }
- return suma;
- }
- return -1;
- }
- private int sumaFila(int i){
- if(i>=0 & matriz!=null){
- int suma = 0;
- for (int j = 0; j<n; j++){
- suma = matriz[i][j] + suma;
- }
- return suma;
- }
- return -1;
- }
- private int sumaDiagonalIzquierda(){
- int sum = 0;
- for (int i = 0; i<n; i++){
- sum=sum + matriz[i][i];
- }
- return sum;
- }
- private int sumaDiagonalDerecha(){
- int sum = 0;
- for (int i = 0; i<n; i++){
- sum=sum + matriz[i][n-(i+1)];
- }
- return sum;
- }
- public void mostrarMatrizYSuma(int [][]a){
- int l = matriz.length; //tamanio de la matriz
- for(int i=0;i<l;i++){
- int sumafila=0;
- for(int j=0;j<l;j++){
- sumafila=sumafila+a[i][j];
- System.out.print(a[i][j] + "\t");
- }
- System.out.print("\t->"+sumafila);
- System.out.println();
- }
- //Opcional
- for(int i=0;i<l;i++){
- System.out.print("|\t");
- }
- System.out.println();
- //hasta aqui
- int sumac=0;//guarda la suma de cada columna
- for(int i=0;i<l;i++){
- sumac = 0;
- for(int j=0;j<l;j++){
- /**Aqui unicamente hice voltee las variables en lugar de a[i][j], puse a[j][i], razonalo y veras que eso era todo
- era totalmente necesario hacerlo en dos ciclos*/
- sumac = sumac + a[j][i];
- }
- System.out.print(sumac + "\t");
- }
- System.out.println();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement