Хранения матриц в динамически распределяемой области памяти - Turbo Pascal
Формулировка задачи:
Скажите пожалуйста или приведите пример хранения матриц в динамически распределяемой области памяти, для трёх случаев:
а) число строк - константа, а число столбцов - исходное данное;
б) число строк - исходное данное, число столбцов - константа;
в) число строк и число столбцов - исходные данные.
Решение задачи: «Хранения матриц в динамически распределяемой области памяти»
textual
Листинг программы
const n=4; type t=array[1..n,1..n]of integer; var a:^t; b:pointer; c:integer; d:array[1..n,1..n]of integer; procedure CreateArray(a:pointer;b,c:integer); var i,j:integer; d:^integer; begin d:=a; for i:=1 to b do for j:=1 to c do begin d^:=random(100); inc(d); end; end; procedure WriteArray(a:pointer;b,c:integer); var i,j:integer; d:^integer; begin d:=a; for i:=1 to b do begin for j:=1 to c do begin write(d^:3); inc(d); end; writeln end; end; begin new(a); CreateArray(a,n,n); WriteArray(a,n,n); dispose(a); writeln; CreateArray(@d,n,n); WriteArray(@d,n,n); writeln; repeat write('Enter m:'); readln(c); until c in [n..9]; GetMem(b,c*sizeof(integer)*n); CreateArray(b,n,c); writeArray(b,n,c); writeln; writeArray(b,c,n); freeMem(b,c*sizeof(integer)*n); end.
Объяснение кода листинга программы
- Объявлены константы: n = 4, c = 9.
- Объявлен тип t как массив размером n на n целых чисел.
- Объявлены переменные: a, b, c, d.
- Переменная a объявлена как указатель на массив t.
- Переменная b объявлена как указатель на память размером nnsizeof(integer).
- Переменная c объявлена как целочисленный индекс для цикла.
- Переменная d объявлена как массив размером n на n целых чисел.
- Объявлена процедура CreateArray для заполнения массива случайными числами.
- В процедуре CreateArray объявлены вспомогательные переменные i, j, d.
- В цикле по i для каждого элемента массива b создается вложенный цикл по j.
- В каждой итерации вложенного цикла в элемент массива d записывается случайное число.
- Элемент массива d инкрементируется для перехода к следующему элементу.
- Объявлена процедура WriteArray для вывода содержимого массива на экран.
- В процедуре WriteArray объявлены вспомогательные переменные i, j, d.
- В цикле по i для каждого элемента массива b начинается цикл по j.
- В каждой итерации вложенного цикла элемент массива d выводится на экран.
- После каждой итерации внутреннего цикла элемент массива d инкрементируется.
- После каждой итерации внешнего цикла элемент массива d инкрементируется.
- После каждой итерации внешнего цикла выполняется операция завершающей запись.
- В основной части программы выполняются следующие действия:
- Создается динамический массив a размером n на n.
- Вызывается процедура CreateArray для заполнения массива a случайными числами.
- Вызывается процедура WriteArray для вывода содержимого массива a на экран.
- Массив a освобождается с помощью операции dispose.
- В цикле запрашивается ввод числа m, и если оно находится в диапазоне от n до 9, выполняются следующие действия:
- Создается динамический массив b размером m на n.
- Вызывается процедура CreateArray для заполнения массива b случайными числами.
- Вызывается процедура WriteArray для вывода содержимого массива b на экран.
- Выполняется операция завершающей записи для массива b.
- Выполняется операция завершающей записи для массива b.
- В цикле запрашивается ввод числа m, и если оно находится в диапазоне от n до 9, выполняются следующие действия:
- Создается динамический массив b размером m на n.
- Вызывается процедура CreateArray для заполнения массива b случайными числами.
- Вызывается процедура WriteArray для вывода содержимого массива b на экран.
- Выполняется операция завершающей записи для массива b.
- Выполняется операция завершающей записи для массива b.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д