Переписать в массив B в убывающем порядке все отрицательные элементы массива А - Pascal ABC
Формулировка задачи:
Дан одномерный массив целых чисел A[1..n].
Напишите программу, которая перепишет в массив B[1..n] сначала в убывающем порядке все
отрицательные элементы массива А, а затем в возрастающем порядке все положительные элементы массива А.
Например, для A = (4, -8, 7, -6, 0, -7, 5), получим B = (-6, -7, -8, 0, 4, 5, 7).
Решение задачи: «Переписать в массив B в убывающем порядке все отрицательные элементы массива А»
textual
Листинг программы
type mA=array[1..1] of integer; mAFictive=array[1..10000] of integer; pAFict = ^mAFictive; procedure ArrayAdd(var AAA : pAFict; var N : integer; val: integer); var siz : word; pAF, p4Free : pAFict; i : integer; begin n:=n+1; siz:=n*SizeOf(mA); GetMem(pAF,siz); {выделяем новую область памяти} // копируем туда старые данные for i:=1 to n-1 do pAF^ := AAA^; // можно через CopyMem переписать... p4Free := AAA; {сохраним указатель на ту память, чтобы была выделена ранее} AAA := pAF; {теперь новая память доступна} FreeMem(p4Free); {очистим предыдущий указатель} AAA^[n]:=val; end; var i, n : integer; pAF : pAFict; begin WriteLn('Хакерские приемы в PASCAL.ABC'); n:=0; ArrayAdd( pAF, n, 200 ); ArrayAdd( pAF, n, 300 ); ArrayAdd( pAF, n, 400 ); for i:=1 to N do // Writeln(i, ' = ', pAFict(A)^); Writeln(i, ' = ', pAF^); FreeMem(pAF); // обязательно освободить память... readln; end.
Объяснение кода листинга программы
- Создаются две переменные типа mA и mAFictive.
- Создается указатель на массив mAFictive, который называется pAFict.
- В процедуре ArrayAdd выделяется новая область памяти для массива AAA размером n*SizeOf(mA).
- В цикле for копируются старые данные из pAFict в новую область памяти AAA.
- После завершения цикла, указатель на старую область памяти pAFict сохраняется в переменной p4Free.
- Новая область памяти AAA становится доступной и заменяет старую.
- Значение 200 записывается в AAA[n], затем значение 300 и значение 400.
- Для каждого i от 1 до N выводится i и значение pAF^.
- После вывода всех значений, освобождается память с помощью функции FreeMem.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д