Дан массив размера 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
еще раз для вывода преобразованного массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д