Вставить число к между всеми соседними элементами, имеющими одинаковый знак - Pascal

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

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

Здравствуйте! Прошу помочь. Есть задание: вставить число К между всеми соседними элементами, имеющими одинаковый знак.новый массив не создавать. Но могу только так, то есть с созданием нового массива. Прошу подтолкнуть в правильное русло.Спасибо!
Листинг программы
  1. program vstavka;
  2. const N=10;
  3. k=3;
  4. var a: array[1..N]of Integer;
  5. b: array[1..2*N]of Integer;
  6. i,j,m: Integer;
  7. f:boolean;
  8. begin
  9. writeln ('исходный массив');
  10. writeln ('=====================');
  11. for i:=1 to N do
  12. begin
  13. a[i]:=Random(40)-20;
  14. writeln ('a[',i,']=',a[i]);
  15. end;
  16. j:=1;
  17. for i:=1 to N-1 do
  18. begin
  19. b[j]:=a[i];
  20. if a[i]*a[i+1]>0 then begin
  21. j:=J+1;
  22. b[j]:=k;
  23. end;
  24. j:=j+1;
  25. end;
  26. writeln ('=====================');
  27. for i:=1 to j-1 do
  28. writeln ('b[',i,']=',b[i]);
  29. writeln ('=====================');
  30. end.

Решение задачи: «Вставить число к между всеми соседними элементами, имеющими одинаковый знак»

textual
Листинг программы
  1. const n=20;
  2. var
  3.   a:array[1..2*n]of integer;
  4.   b,c,d,e,f:integer;
  5. begin
  6.   repeat
  7.     write('Enter N:');
  8.     readln(b);
  9.   until (b>0)and(b<n);
  10.   for c:=1 to b do
  11.     begin
  12.       a[c]:=random(40)-20;
  13.       write(a[c]:3);
  14.     end;
  15.   writeln;
  16.   write('Enter K:');
  17.   readln(d);
  18.   c:=1;
  19.   while c<b do
  20.     begin
  21.       if a[c]*a[c+1]>0 then
  22.         begin
  23.           inc(c);
  24.           e:=c;
  25.           inc(b);
  26.           repeat
  27.             f:=a[e];
  28.             a[e]:=d;
  29.             d:=f;
  30.             inc(e);
  31.           until e=b;
  32.           a[b]:=d;
  33.           d:=a[c];
  34.         end;
  35.       inc(c);
  36.     end;
  37.   for c:=1 to b do
  38.     write(a[c]:3);
  39. end.

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

  1. Создается переменная n, которая представляет собой количество элементов в массиве a.
  2. Создается переменная a, которая представляет собой массив из 2*n элементов типа integer.
  3. Создаются переменные b, c, d, e, f, которые представляют собой входные данные для программы.
  4. Запускается цикл repeat, который продолжается до тех пор, пока не будет введено корректное значение для b (больше 0 и меньше n).
  5. Внутри цикла for c:=1 до b do выполняется цикл, который продолжается до тех пор, пока c не станет равным b.
  6. Внутри цикла for c=1 до b do выполняется блок кода, который вставляет значение d между элементами a[c] и a[c+1] при условии, что a[c]*a[c+1]>0.
  7. После вставки значения d между элементами a[c] и a[c+1] обновляется значение e и увеличивается значение b.
  8. Повторяется шаг 7 до тех пор, пока e не станет равным b.
  9. После того, как значение d было вставлено между элементами a[c] и a[c+1], обновляется значение a[b] и увеличивается значение d.
  10. Цикл for c=1 до b do выводит значение a[c].
  11. Запускается цикл repeat, который продолжается до тех пор, пока не будет введено корректное значение для d (больше 0 и меньше n).
  12. После ввода корректного значения для d, запускается цикл while c<b do, который повторяется до тех пор, пока c не станет равным b.
  13. Внутри цикла while c=1 до b do выполняется блок кода, который вставляет значение d между элементами a[c] и a[c+1] при условии, что a[c]*a[c+1]>0.
  14. После вставки значения d между элементами a[c] и a[c+1] обновляется значение e и увеличивается значение b.
  15. Повторяется шаг 14 до тех пор, пока e не станет равным b.
  16. После того, как значение d было вставлено между элементами a[c] и a[c+1], обновляется значение a[b] и увеличивается значение d.
  17. Цикл for c=1 до b do выводит значение a[c].
  18. Выводится значение k.
  19. Запускается цикл repeat, который продолжается до тех пор, пока не будет введено корректное значение для k (больше 0 и меньше n).
  20. После ввода корректного значения для k, программа завершается.

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


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

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

10   голосов , оценка 4.4 из 5

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

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

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