Дана квадратная матрица - Turbo Pascal (33566)
Формулировка задачи:
Дана квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать ее в общепринятом виде.
Нужно в этой матрице сделать ввод массива от пользователя , а не рэндомный пробовал не получается помогите , буду благодарен
Решение задачи: «Дана квадратная матрица»
textual
Листинг программы
const maxsize = 10; var arr : array[1 .. maxsize] of integer; var mx : array[1 .. maxsize, 1 .. maxsize] of integer; mxSize : integer; i, j, k, size : integer; begin repeat write('n = '); readln(size); until (size > 0) and (size <= maxsize); { сначала находим размер матрицы: } mxSize := (Trunc(Sqrt(Succ(8*size))) - 1) div 2; writeln('Размер матрицы: ', mxSize, '*', mxSize); writeln('Введите массив:'); for i := 1 to size do begin write('A[', i:2, '] = '); readln(arr[i]); end; k := 1; { Ну, а потом - заполняем ее } for i := 1 to mxSize do begin mx[i, i] := arr[k]; { элемент главной диагонали } inc(k); for j := i + 1 to mxSize do begin mx[i, j] := arr[k]; { над главной } mx[j, i] := arr[k]; { под главной } inc(k); end; end; for i := 1 to mxSize do begin for j := 1 to mxSize do write(mx[i, j]:5); writeln; end; end.
Объяснение кода листинга программы
- Объявляются переменные
maxsize
,arr
иmx
с соответствующими значениями. - Запрашивается размер матрицы от пользователя.
- Проверяется, что введенный размер не превышает максимально допустимый размер матрицы.
- Вычисляется размер матрицы
mx
с помощью формулыmxSize := (Trunc(Sqrt(Succ(8*size))) — 1) div 2;
. - Выводится сообщение с размером матрицы.
- Запрашивается ввод массива
arr
от пользователя. - Заполняется матрица
mx
с использованием циклов и значений из массиваarr
. - Выводится матрица
mx
построчно с помощью циклаfor
. - Конец программы.