Получить квадратную матрицу порядка n по заданному образцу - C (СИ)

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

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

5.95 Получить квадратную матрицу порядка n по заданному образцу: 1 2 3 … n-2 n-1 n 2 1 2 … n-3 n-2 n-1 3 2 1 n-4 n-3 n-2 . . . … . . . . . … … . . n-1 n-2 n-3 … 2 1 2 n n-1 n-2 … 3 2 1 Нужно решить задачу с помощью указателей. Есть решение, не используя их:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#define n1 100
#define m1 100
void main(void)
{
    clrscr();
    int a[n1][m1], n, i, j, temp, k, v;
    randomize();
    printf("Vvedite n - ");
    scanf("%i", &n);
    for (i = 0; i < n; i++)
    {
        a[i][i] = 1;
        for (j = i + 1; j <= n; j++)
        {
            a[i][j] = (j - i) + 1;
            a[j][i] = (j - i) + 1;
        }
    }
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
            printf("%i  ", a[i][j]);
        printf("\n");
    }
    getch();
}

Решение задачи: «Получить квадратную матрицу порядка n по заданному образцу»

textual
Листинг программы
#include<conio.h>
#include<math.h>
#include<stdlib.h>
#define n1 100
#define m1 100
int main()
{
    int a[n1][m1],n,i,j;
    n=5;
    for(i=0;i<n;i++)
    {
        *((int*)a+i*m1+i)=1;
        for(j=i+1;j<=n;j++)
        {
            *((int*)a+i*m1+j)=(j-i)+1;
            *((int*)a+j*m1+i)=(j-i)+1;
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf("%i  ",*((int*)a+i*m1+j));
        printf("\n");
    }
    system("pause");
    return 0;
}

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

В этом коде:

  1. Создается массив a типа int размером n1 на m1.
  2. Задается значение переменной n равным 5.
  3. В цикле формируется квадратная матрица порядка n по заданному образцу:
      • Внутренний цикл i=0..n-1 заполняет главную диагональ матрицы значениями 1.
      • Внешний цикл j=i+1..n заполняет побочные диагонали значениями (j-i)+1.
  4. Выводится на экран полученная матрица.
  5. Ввод команды system(pause) приостанавливает выполнение программы до нажатия клавиши.
  6. Возвращается 0, завершая работу программы. Пример вывода на экран при n=5: 1 2 3 4 5 2 1 3 4 5 3 2 1 4 5 4 3 2 1 5 5 4 3 2 1

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

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