Pascal, Динамические структуры данных.Матрица, размещена в динамической памятиЗадание звучит так:Дана матрица размера N*M (N меньше =150, M меньше =200). .Элементы 1й строки циклически сдвинуть на 1 позицию вправо, 2й строки на...

Pascal, Динамические структуры данных. Матрица, размещена в динамической памяти Задание звучит так: Дана матрица размера N*M (N<=150, M<=200). .Элементы 1й строки циклически сдвинуть на 1 позицию вправо, 2й строки на 2 позиции, 3й строки на 3 позиции и т. д просьба, написать программу, с комментариями, т.к. с указателями толком не разобрался. заранее  спасибо. Турбо-Паскаль
Гость
Ответ(ы) на вопрос:
Гость
uses Crt; type   MCo = array[1..200] of longint; {строка массива - до 200 столбцов}   DV = ^MCo; {указатель на строку массива}   MR = array[1..150] of DV; {массив указателей на строки} var   a: MR; {Создается массив указателей на строки}   n,m:longint; procedure ShiftCycle(row: longint; k: longint); var   i, j, e: longint; begin   for i := 1 to k do   begin     e := a[row]^[m];     for j := m - 1 downto 1 do a[row]^[j + 1] := a[row]^[j];     a[row]^[1] := e   end; end; var   i, j, e: longint; begin   ClrScr;   writeln('Введите число строк и столбцов массива');   readln(n,m);   writeln('Введите элементы массива');   for i := 1 to n do   begin     getmem(a[i], m * sizeof(longint)); {Фактическое выделение памяти под i-ю строку строку массива}     writeln('Строка ',i,':');     for j := 1 to m do read(a[i]^[j])   end;   writeln;   for i := 1 to n do   begin     ShiftCycle(i, i);     for j := 1 to m do write(a[i]^[j]:4);     writeln;     freemem(a[i], m * sizeof(longint)) {Освобождение памяти из-под i-й строки массива}   end end. Тестовый прогон: Введите число строк и столбцов массива 4 5 Введите элементы массива Строка 1: 1 2 3 4 5 Строка 2: 6 7 8 9 10 Строка 3: 11 12 13 14 15 Строка 4: 16 17 18 19 20     5    1   2    3   4     9  10   6    7   8   13  14  15  11  12   17  18  19  20  16
Не нашли ответ?
Ответить на вопрос
Похожие вопросы