Хранения матриц в динамически распределяемой области памяти - 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.

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

  1. Объявлены константы: n = 4, c = 9.
  2. Объявлен тип t как массив размером n на n целых чисел.
  3. Объявлены переменные: a, b, c, d.
  4. Переменная a объявлена как указатель на массив t.
  5. Переменная b объявлена как указатель на память размером nnsizeof(integer).
  6. Переменная c объявлена как целочисленный индекс для цикла.
  7. Переменная d объявлена как массив размером n на n целых чисел.
  8. Объявлена процедура CreateArray для заполнения массива случайными числами.
  9. В процедуре CreateArray объявлены вспомогательные переменные i, j, d.
  10. В цикле по i для каждого элемента массива b создается вложенный цикл по j.
  11. В каждой итерации вложенного цикла в элемент массива d записывается случайное число.
  12. Элемент массива d инкрементируется для перехода к следующему элементу.
  13. Объявлена процедура WriteArray для вывода содержимого массива на экран.
  14. В процедуре WriteArray объявлены вспомогательные переменные i, j, d.
  15. В цикле по i для каждого элемента массива b начинается цикл по j.
  16. В каждой итерации вложенного цикла элемент массива d выводится на экран.
  17. После каждой итерации внутреннего цикла элемент массива d инкрементируется.
  18. После каждой итерации внешнего цикла элемент массива d инкрементируется.
  19. После каждой итерации внешнего цикла выполняется операция завершающей запись.
  20. В основной части программы выполняются следующие действия:
    • Создается динамический массив 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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