Получить квадратную матрицу порядка 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д