Переписать в массив 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.

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

  1. Создаются две переменные типа mA и mAFictive.
  2. Создается указатель на массив mAFictive, который называется pAFict.
  3. В процедуре ArrayAdd выделяется новая область памяти для массива AAA размером n*SizeOf(mA).
  4. В цикле for копируются старые данные из pAFict в новую область памяти AAA.
  5. После завершения цикла, указатель на старую область памяти pAFict сохраняется в переменной p4Free.
  6. Новая область памяти AAA становится доступной и заменяет старую.
  7. Значение 200 записывается в AAA[n], затем значение 300 и значение 400.
  8. Для каждого i от 1 до N выводится i и значение pAF^.
  9. После вывода всех значений, освобождается память с помощью функции FreeMem.

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


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

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

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