Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.Scanner;
- public class Main {
- public static int inputOrder() {
- Scanner scan = new Scanner(System.in);
- int order = 0;
- boolean isIncorrect;
- System.out.println("Введите порядок матрицы (от 2 до 6)");
- do {
- isIncorrect = false;
- try {
- order = Integer.parseInt(scan.nextLine());
- } catch (Exception e) {
- System.out.println("Введите целое число!");
- isIncorrect = true;
- }
- if (isIncorrect == false && (order < 2 || order > 6)) {
- System.out.println("Некорректные данные. Введите длину из указанного диапазона");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return order;
- }
- public static void inputMatrix(int[][] matrix){
- Scanner scan = new Scanner(System.in);
- boolean isIncorrect;
- for (int i = 0; i < matrix.length; i++){
- for (int j = 0; j < matrix.length; j++){
- do {
- System.out.println("Введите элемент матрицы а" + (i + 1) + (j + 1));
- try {
- isIncorrect = false;
- matrix[i][j] = Integer.parseInt(scan.nextLine());
- }catch (Exception e){
- System.out.println("Введите натуральное число!");
- isIncorrect = true;
- }
- if (isIncorrect == false && matrix[i][j] < 1){
- System.out.println("Введите натуральное число!");
- isIncorrect = true;
- }
- }while (isIncorrect);
- }
- }
- }
- public static void printMatrix(int[][] matrix){
- System.out.print("Ваша матрица:");
- for (int i = 0; i < matrix.length; i++){
- System.out.println();
- for (int j = 0; j < matrix.length; j++){
- System.out.print(matrix[i][j] + " ");
- }
- }
- System.out.println();
- }
- public static void calcSumStrings(int[][] matrix, int[] sumStrings){
- int sum;
- for (int i = 0; i < matrix.length; i++){
- sum = 0;
- for (int j = 0; j < matrix.length; j++){
- sum += matrix[i][j];
- sumStrings[i] = sum;
- }
- }
- }
- public static void calcSumColumns(int[][] matrix, int[] sumColumns){
- int sum;
- for (int j = 0; j < matrix.length; j++){
- sum = 0;
- for (int i = 0; i < matrix.length; i++){
- sum += matrix[i][j];
- sumColumns[j] = sum;
- }
- }
- }
- public static int calcSumMainDiagonal(int[][] matrix){
- int sum = 0;
- for (int i = 0; i < matrix.length; i++){
- sum += matrix[i][i];
- }
- return sum;
- }
- public static int calcSumSelfDiagonal(int[][] matrix){
- int sum = 0;
- for (int i = 0; i < matrix.length; i++){
- sum += matrix[i][(matrix.length - 1) - i];
- }
- return sum;
- }
- public static void checkMagicSquare(int mainDiagonal, int selfDiagonal, int[] sumStrings, int[] sumColumns){
- boolean equal = true;
- int i = 0;
- while (i < sumStrings.length && equal){
- if (mainDiagonal == selfDiagonal && mainDiagonal == sumStrings[i] && mainDiagonal == sumColumns[i]){
- equal = true;
- }else {
- equal = false;
- System.out.println("Данная матрица НЕ ЯВЛЯЕТСЯ магическим квадратом");
- }
- i++;
- }
- if (equal){
- System.out.println("Данная матрица ЯВЛЯЕТСЯ магическим квадратом");
- }
- }
- public static void main(String[] args) {
- System.out.println("Дана квадратная матрица А порядка n.\nПрограмма проверяет, равны ли суммы элементов матрицы по строкам, \nстолбцам, главной и побочной диагоналям между собой, \nт.е. является ли матрица магическим квадратом.\n" );
- int order = inputOrder();
- int[][] matrix = new int[order][order];
- inputMatrix(matrix);
- printMatrix(matrix);
- int[] sumStrings = new int[order];
- calcSumStrings(matrix, sumStrings);
- int[] sumColumns = new int[order];
- calcSumColumns(matrix, sumColumns);
- int mainDiagonal = calcSumMainDiagonal(matrix);
- int selfDiagonal = calcSumSelfDiagonal(matrix);
- checkMagicSquare(mainDiagonal,selfDiagonal,sumStrings,sumColumns);
- }
- }
Add Comment
Please, Sign In to add comment