Поменять местами первый и последний отрицательный элементы массива - Pascal ABC
Формулировка задачи:
Поменять местами первый и последний отрицательный элементы массива. Используя процедуры:init 2, print 1, swap.
Пример
1 3 -8 9 -7 4 5 -9 2
ответ
1 2 -9 9 -7 4 5 -8 2
Решение задачи: «Поменять местами первый и последний отрицательный элементы массива»
textual
Листинг программы
procedure Init(var V: TVector); var i: integer; begin Randomize; for i:=1 to 10 do begin V[i]:=random(21)-10; end; end; procedure Print(const V: TVector); var i: integer; begin for i:=1 to n do begin Write(V[i], ' '); end; WriteLn; end; procedure Swap(var V: TVector); var i, tmp: integer; first, last: integer; begin first:=0; for i:=1 to n do begin if V[i]<0 then begin if first=0 then first:=i; last:=i; end; end; if first>0 then begin tmp:=V[first]; V[first]:=V[last]; V[last]:=tmp; end; end; begin Init(A); Print(A); Swap(A); Print(A); ReadLn; end.
Объяснение кода листинга программы
- В процедуре Init используется генератор случайных чисел, который задается функцией Randomize. Затем в цикле for происходит итерация от 1 до 10, где каждый элемент массива A вычисляется как случайное число от 10 до 20 (включительно) с помощью выражения random(21)-10. Это гарантирует, что массив будет содержать положительные числа.
- В процедуре Print происходит итерация от 1 до n (количество элементов в массиве A), где каждый элемент выводится на экран с помощью функции Write.
- В процедуре Swap используется переменные first и last, которые инициализируются значением 0. Затем происходит итерация от 1 до n, где проверяется, является ли текущий элемент отрицательным. Если это так, то переменные first и last обновляются таким образом, чтобы первый отрицательный элемент был помещен в переменную first, а последний отрицательный элемент - в переменную last.
- Если первый элемент массива A положительный, то происходит обмен этого элемента с последним отрицательным элементом, используя временную переменную tmp.
- В конце программы вызываются процедуры Init, Print и Swap для массива A, после чего происходит чтение символа новой строки с помощью функции ReadLn.