Сформировать и распечатать квадратную матрицу - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сформировать и распечатать квадратную матрицу n*n вида 1 1 1 … 1 1 1 1 2 2 … 2 2 1 1 2 3 … 3 2 1 … … … … … … … 1 2 3 … 3 2 1 1 2 2 … 2 2 1 1 1 1 … 1 1 1 Помогите пожалуйста, буду благодарен.

Решение задачи: «Сформировать и распечатать квадратную матрицу»

textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
 
int main(void)
{
    int **A;
    int i,j,k,N,val,Half;
    printf("%s","Enter matrix size:\n");
    scanf("%i",&N);
    if(N%2==0) Half=N/2;
    else Half=N/2+1;
    A=malloc(N*sizeof(*A));
    for(i=0;i<N;i++) A[i]=malloc(N*sizeof(*A[i]));
    k=0;
    for(i=0;i<Half;i++)
    {
        for(j=0;j<Half;j++)
        {
            if(j>=k) val=k+1;
            else val=j+1;
            A[i][j]=val;
            A[N-i-1][N-j-1]=val;
            A[N-i-1][j]=val;
            A[i][N-j-1]=val;
        }
        k++;
    }
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++) printf("%i%c",A[i][j],' ');
        printf("%c",'\n');
    }
    for(i=0;i<N;i++) free(A[i]);
    free(A);
    getchar();
    return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Объявлены следующие переменные:
    • N - размерность матрицы (количество строк и столбцов);
    • val - временная переменная для хранения значения элемента матрицы;
    • Half - количество элементов в половине матрицы (для четного размера матрицы - это половина, для нечетного - это значение на 1 меньше середины);
    • A - динамический массив, в котором будут храниться адреса строк матрицы.
  2. Пользователю предлагается ввести размерность матрицы.
  3. Если размерность матрицы четное число, то значение Half вычисляется как половина N. Если нечетное, то как значение на 1 меньше середины N.
  4. С помощью malloc выделяется память под массив A, а затем в цикле выделяются памяти под каждую строку матрицы.
  5. В цикле заполняются элементы матрицы. Для этого используется четыре вложенных цикла. Внешний цикл формирует строки матрицы, а внутренний - столбцы. При этом в каждой ячейке матрицы записывается значение val, которое соответствует номеру строки или столбца (в зависимости от положения ячейки в матрице).
  6. Выполняется печать матрицы с помощью printf.
  7. В конце программы освобождается выделенная память и считывается символ конца файла getchar().
  8. Программа завершается с возвращаемым значением 0, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы