Получить квадратную матрицу порядка 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; }
Объяснение кода листинга программы
В этом коде:
- Создается массив a типа int размером n1 на m1.
- Задается значение переменной n равным 5.
- В цикле формируется квадратная матрица порядка n по заданному образцу:
-
- Внутренний цикл i=0..n-1 заполняет главную диагональ матрицы значениями 1.
-
- Внешний цикл j=i+1..n заполняет побочные диагонали значениями (j-i)+1.
-
- Выводится на экран полученная матрица.
- Ввод команды system(
pause
) приостанавливает выполнение программы до нажатия клавиши. - Возвращается 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д