Дан массив размера N. Преобразовать его, вставив перед каждым положительным элементом введенный элемент - Pascal

Узнай цену своей работы

Формулировка задачи:

Задача: Дан массив размера N. Преобразовать его, вставив перед каждым положительным элементом введенный элемент. У меня что-то не получилось сделать, помогите исправить программу. Что изменить?
Листинг программы
  1. program vstavka;
  2. const
  3. n = 10; {количество элементов в массиве}
  4. type mas=array [1..n+1] of integer;
  5. var
  6. B: mas; {описание длины и типа массива}
  7. k,x,y,i: Integer;
  8. procedure WWOD(var A: mas);
  9. var i:integer;
  10. begin
  11. randomize;
  12. for i:=1 to n do
  13. A[i]:=random(20)-random(20);{i-ому элементу массива присваивается случайное значение от -20 до 20}
  14. end;
  15. procedure WIWOD (var A: mas);
  16. var i:integer;
  17. begin
  18. for i:=1 to n do {вывод исходного массива на экран}
  19. write(A[i],' ');
  20. writeln;
  21. end;
  22. Procedure Insert(Var A: mas; Var y: integer; Mesto, Element: integer);
  23. Var
  24. i: integer;
  25. Begin
  26. for i := y downto Mesto+1 do
  27. A[i+1] := A[i];
  28. A[Mesto+1]:= Element;
  29. Inc(y);
  30. End;
  31. Begin
  32. WWOD(B);
  33. writeln('Исходный массив: ');
  34. WIWOD(B);
  35. Writeln('Вставляемое число:');
  36. Readln(x);
  37. for i:=n downto k+1 do
  38. if B[i]>0 then
  39. Insert(B, y, k, x);
  40. Writeln('Полученный массив:');
  41. WIWOD(B);
  42. End.

Решение задачи: «Дан массив размера N. Преобразовать его, вставив перед каждым положительным элементом введенный элемент»

textual
Листинг программы
  1. program pr;
  2.  
  3. type
  4.   arr = array [1..100] of integer;
  5.  
  6. var
  7.   a: arr;
  8.   n, x: integer;
  9.  
  10. procedure fill(var v: arr; var f: integer);
  11. var
  12.   i: integer;
  13. begin
  14.   for i := 1 to n do
  15.   begin
  16.     v[i] := random(21) - 10;
  17.   end;
  18. end;
  19.  
  20. procedure print(var v: arr);
  21. var
  22.   i: integer;
  23. begin
  24.   for i := 1 to n do
  25.   begin
  26.     write(v[i]:3);
  27.   end;
  28. end;
  29.  
  30. procedure inset(var v: arr; var f: integer; var c: integer);
  31. var
  32.   i, temp, j: integer;
  33. begin
  34.   i := 1;
  35.   while i <= f do
  36.   begin
  37.     if v[i] > 0 then
  38.     begin
  39.       f := f + 1;
  40.       for j := f downto i + 1 do
  41.         v[j] := v[j - 1];
  42.       v[i] := c;
  43.       i := i + 2;
  44.     end
  45.     else i := i + 1;
  46.   end;
  47. end;
  48.  
  49. begin
  50.   writeln('Введите размер массива');
  51.   readln(n);
  52.   writeln;
  53.   writeln('Введите число для вставки');
  54.   readln(x);
  55.   fill(a, n);
  56.   print(a);
  57.   inset(a, n, x);
  58.   writeln;
  59.   writeln('После преобразования');
  60.   print(a);
  61. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы