Дан массив размера N. Преобразовать его, вставив перед каждым положительным элементом введенный элемент - Pascal
Формулировка задачи:
Задача: Дан массив размера N. Преобразовать его, вставив перед каждым положительным элементом введенный элемент.
У меня что-то не получилось сделать, помогите исправить программу. Что изменить?
program vstavka; const n = 10; {количество элементов в массиве} type mas=array [1..n+1] of integer; var B: mas; {описание длины и типа массива} k,x,y,i: Integer; procedure WWOD(var A: mas); var i:integer; begin randomize; for i:=1 to n do A[i]:=random(20)-random(20);{i-ому элементу массива присваивается случайное значение от -20 до 20} end; procedure WIWOD (var A: mas); var i:integer; begin for i:=1 to n do {вывод исходного массива на экран} write(A[i],' '); writeln; end; Procedure Insert(Var A: mas; Var y: integer; Mesto, Element: integer); Var i: integer; Begin for i := y downto Mesto+1 do A[i+1] := A[i]; A[Mesto+1]:= Element; Inc(y); End; Begin WWOD(B); writeln('Исходный массив: '); WIWOD(B); Writeln('Вставляемое число:'); Readln(x); for i:=n downto k+1 do if B[i]>0 then Insert(B, y, k, x); Writeln('Полученный массив:'); WIWOD(B); End.
Решение задачи: «Дан массив размера N. Преобразовать его, вставив перед каждым положительным элементом введенный элемент»
textual
Листинг программы
program pr; type arr = array [1..100] of integer; var a: arr; n, x: integer; procedure fill(var v: arr; var f: integer); var i: integer; begin for i := 1 to n do begin v[i] := random(21) - 10; end; end; procedure print(var v: arr); var i: integer; begin for i := 1 to n do begin write(v[i]:3); end; end; procedure inset(var v: arr; var f: integer; var c: integer); var i, temp, j: integer; begin i := 1; while i <= f do begin if v[i] > 0 then begin f := f + 1; for j := f downto i + 1 do v[j] := v[j - 1]; v[i] := c; i := i + 2; end else i := i + 1; end; end; begin writeln('Введите размер массива'); readln(n); writeln; writeln('Введите число для вставки'); readln(x); fill(a, n); print(a); inset(a, n, x); writeln; writeln('После преобразования'); print(a); end.
Объяснение кода листинга программы
- В программе объявлены три переменные:
a
,n
иx
. Переменнаяa
является массивом размером 100, переменнаяn
- целочисленной, а переменнаяx
- также целочисленной. - В процедуре
fill
используется циклfor
для заполнения массива случайными числами от -10 до 10. - В процедуре
print
используется циклfor
для вывода элементов массива на экран. - В процедуре
inset
используется циклwhile
для проверки каждого элемента массива на положительность. Если элемент положительный, то он заменяется введенным числомc
. Циклwhile
продолжается, пока не будет проверен весь массив. - После ввода размера массива и числа для вставки, вызывается функция
fill
для заполнения массива случайными числами. - Затем вызывается функция
print
для вывода массива на экран. - После этого вызывается функция
inset
для вставки числаx
перед каждым положительным элементом массива. - Наконец, вызывается функция
print
еще раз для вывода преобразованного массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д