Как создать квадратную матрицу на языке программирования C? - PullRequest
0 голосов
/ 06 августа 2020

Я хотел знать, могу ли я получить помощь в создании квадратной матрицы. Я знаю, как создать матрицу, но мне нужно заполнить матрицу. У меня возникли проблемы после logi c, чтобы создать следующую матрицу:

0 1 2 3 4 5
1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 7 8
4 5 6 7 8 9
5 6 7 8 9 10

Вот что у меня есть в моем коде до сих пор: EDIT * Я изменил инструкцию else от arr [i] [j] + = 1 до arr [i] [j-1] + 1

void computeMatrix(int rows, int cols, int sqMatrix[][cols]){
    int i,j;

    for(i = 0; i < rows; i++){
        for(j = 0; j < cols; j++){
            if(i == 0 && j == 0){
                arr[i][j] = 0;
            }
            else{
                arr[i][j] = arr[i][j-1] + 1; //previously arr[i][j] += 1
            }
        }
    }
}

Проблема, с которой я столкнулся, заключается в том, что этот код создает следующую матрицу:

0 1 2 3 4 5
6 7 8 9 10 11
12 13 14 15 16 17
18 19 20 21 22 23
24 25 26 27 28 29 
30 31 32 33 34 35

Я не уверен, какой тип logi c реализовать, чтобы получить правильную матрицу. У меня есть общее представление, но я не уверен, как реализовать его в коде. Я знаю, что по мере того, как мы go вниз по строкам, мы увеличиваемся на 1, а когда мы go по столбцам, мы также увеличиваем на 1.

Любая помощь, которую я мог бы получить, будет очень признательна!

Ответы [ 3 ]

2 голосов
/ 06 августа 2020

Элементы первой матрицы могут быть установлены с помощью:

a[i][j] = i + j;

Нет необходимости в выражении if внутри l oop. Все это выглядит так:

void computeMatrix(int rows, int cols, int sqMatrix[][cols])
{
    int i,j;

    for (i = 0; i < rows; i++) {
        for (j = 0; j < cols; j++) {
            arr[i][j] = i + j;
        }
    }
}
0 голосов
/ 06 августа 2020

Как мне создать квадратную матрицу на языке программирования C?

Вы думаете об этом как об абстрактном типе данных , используя C Dynami c выделение памяти .

Этот ответ дает подробную информацию и код и использует гибкие элементы массива .

Читать Современные C книги

0 голосов
/ 06 августа 2020
void computeMatrix(const size_t rows, const size_t cols, int *arr)
{
    
    for(size_t r = 0; r < rows; r++)
    {
        for(size_t c = 0; c < cols; c++)
        {
            arr[r * cols + c] = c + r;
        }
    }
}



void printmatriz(const int rows, const int cols, int *arr)
{
    for(size_t r = 0; r < rows; r++)
    {
        for(size_t c = 0; c < cols; c++)
        {
            printf("%2d ", arr[r * cols + c]);
        }
        printf("\n");
    }
}

#define X 6
#define Y 6

int main(void)
{
    int arr[X][Y];

    computeMatrix(X,Y,&arr[0][0]);
    printmatriz(X,Y, &arr[0][0]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...