Дан массив размера 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.

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

  1. В программе объявлены три переменные: a, n и x. Переменная a является массивом размером 100, переменная n - целочисленной, а переменная x - также целочисленной.
  2. В процедуре fill используется цикл for для заполнения массива случайными числами от -10 до 10.
  3. В процедуре print используется цикл for для вывода элементов массива на экран.
  4. В процедуре inset используется цикл while для проверки каждого элемента массива на положительность. Если элемент положительный, то он заменяется введенным числом c. Цикл while продолжается, пока не будет проверен весь массив.
  5. После ввода размера массива и числа для вставки, вызывается функция fill для заполнения массива случайными числами.
  6. Затем вызывается функция print для вывода массива на экран.
  7. После этого вызывается функция inset для вставки числа x перед каждым положительным элементом массива.
  8. Наконец, вызывается функция print еще раз для вывода преобразованного массива.

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


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

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

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