Печать четной матрицы по диагонали - PullRequest
0 голосов
/ 22 ноября 2018

У меня проблема с матрицами, мне нужно заполнить матрицу m на n (то есть m строк и n столбцов) четными числами по диагонали.

пример: Требуемый вывод

Я придумал следующий код, но я не могу увеличить ряд по диагонали, даже если матрица квадратная (например,Матрица 4 на 4) программа работает нормально, но в противном случае, если она равна n, я получаю ошибку.

Мой код:

    int val;
    int lonv;
    int fil;
    int col;
    int su=2;
    int matriz[][];
    BufferedReader br=new BufferedReader (new InputStreamReader(System.in));
    System.out.println("Ingrese el nro de filas para la matriz: ");
    fil=Integer.parseInt(br.readLine());
    System.out.println("Ingrese el nro de columnas para la matriz: ");
    col=Integer.parseInt(br.readLine());
    matriz=new int [fil][col];
    for(int i=0; i<fil; i++)
    {
        for(int j=(col-1); j>=0; j-- )
        {
            if(matriz[i][j]<= 2)
            {
                matriz[i][j]= su;
                su+=2;
            }
            else
            {

                System.out.println("");
                matriz[i][j]= su;
                su+=2;
            }

        }
    }
    for(int i=0; i<col; i++)
    {
        for(int j=0; j<col; j++)
        {
            System.out.print(matriz[i][j]+" ");
        }
        System.out.println("");
    }

Контрольный пример 1 : ошибка

Контрольный пример 2 : не удалось распечатать втребуемый диагональный формат

1 Ответ

0 голосов
/ 23 ноября 2018

Ошибка

Второй вложенный цикл

Вы получаете ошибку indexoutofbounds для матрицы m на n, поскольку ваш второй вложенный цикл строго зависит от размера столбцов, подразумевая, что для негодля бесперебойной работы матрица должна быть квадратной:

for(int i=0; i<col; i++)
{
    for(int j=0; j<col; j++)
    {
        System.out.print(matriz[i][j]+" ");
    }
    System.out.println("");
}

Ваш случай ошибки

n> m error

Ошибка произойдет, когда n> m.Если количество столбцов больше, чем количество строк (n> m), вы пытаетесь получить доступ к данным, которые не были созданы, поскольку вы правильно инициализировали их как матрицу m на n в строке:

matriz=new int [fil][col];

Решение

Предполагая, что вы правильно вставили значения матрицы m на n, просто выведите матрицу такой, какая она есть (матрица m на n, а не n на n), например так:

for(int i=0; i<fil; i++)
{
    for(int j=0; j<col; j++)
    {
        System.out.print(matriz[i][j]+" ");
    }
    System.out.println("");
}

Диагональ печати

Информацию о печати массива по диагонали можно найти по адресу: http://javabypatel.blogspot.com/2016/12/print-matrix-diagonally-or-diagonal.html

Логика должна быть очень переносимой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...