Печать матрицы и чисел под второй диагональю - PullRequest
1 голос
/ 29 сентября 2019

Моя задача - распечатать матрицу целых чисел, отсканированных с клавиатуры, а затем распечатать числа под второй диагональю, используя отдельные функции. Мой код выглядит так:

#include <stdio.h>
#include <stdlib.h>

//array[n][n] = 2D array of n rows and n columns
//n = number of rows and columns
void printmatrix(int n, int array[n][n]){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    return;
}

void undersdiagonal(int n, int array[n][n]){
    for(int i = 1; i < n; i++){
        /**/
        for(int j = 1; (j < n); j++){
            printf("%d ", array[i][j]);
        }
    }
    return;
} 

int main(){
    int n;
    scanf("%d", &n);
    int integermatrix[n][n];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            scanf("%d", &integermatrix[i][j]);
        }    
    }
    printf("The entered matrix is:\n");
    //calls first function to print matrix 
    printmatrix(n, integermatrix);
    printf("Under the secondary diagonal:\n");
    //calls second function to print numbers under main diagonal 
    undersdiagonal(n,integermatrix);
    printf("\n");
    return 0;
}

Я не могу понять, как распечатать числа под второй основной диагональю из функции

void undersdiagonal(int n, int array[n][n]).

Мой ввод выглядит так:

3
1
2
3
4 
5
6
7
8
9

И вывод выглядит так:

The entered matrix is:
1 2 3 
4 5 6 
7 8 9 
Under the secondary diagonal:
5 6 8 9 

Но я хочу, чтобы вывод был:

The entered matrix is:
1 2 3 
4 5 6 
7 8 9 
Under the secondary diagonal:
6 8 9  

Что я мог бы изменить в 'для'loop внутри цикла' for 'в функции

void undersdiagonal(int n, int array[n][n])

?

1 Ответ

1 голос
/ 30 сентября 2019

Ключ с внутренним циклом undersdiagonal:

Как написано в настоящее время, for(int j = 1; (j < n); j++){ начинается со второго столбца (столбец 1) каждый раз. Он должен начинаться с другого столбца для каждой строки.

  • Для матрицы 3 × 3 вторая строка (строка 1) начинается с последнего столбца (столбец 2). Для матрицы 4 × 4 вторая строка (строка 1) начинается с последнего столбца (столбец 3) ... Таким образом, существует прямая взаимосвязь между начальным столбцом (j) и размером матрицы: n.
  • Каждый раз, когда номер строки увеличивается вверх единица, начальный столбец идет вниз один. Таким образом, существует обратная связь между начальным столбцом (j) и строкой: - i.

Возьмите эти две части вместе, и вы получите int j = n - i;

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