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

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

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

Здравствуйте! Прошу помочь. Есть задание: вставить число К между всеми соседними элементами, имеющими одинаковый знак.новый массив не создавать. Но могу только так, то есть с созданием нового массива. Прошу подтолкнуть в правильное русло.Спасибо!
program vstavka; 
const N=10; 
 k=3; 
var a: array[1..N]of Integer; 
b: array[1..2*N]of Integer; 
i,j,m: Integer; 
f:boolean; 
begin 
writeln ('исходный массив'); 
writeln ('====================='); 
for i:=1 to N do 
begin 
a[i]:=Random(40)-20;
writeln ('a[',i,']=',a[i]); 
end; 
j:=1; 
for i:=1 to N-1 do 
begin 
b[j]:=a[i]; 
if a[i]*a[i+1]>0 then begin 
j:=J+1; 
b[j]:=k; 
end; 
j:=j+1; 
end; 
writeln ('====================='); 
for i:=1 to j-1 do 
writeln ('b[',i,']=',b[i]);
 
writeln ('=====================');
 
end.

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

textual
Листинг программы
const n=20;
var
  a:array[1..2*n]of integer;
  b,c,d,e,f:integer;
begin
  repeat
    write('Enter N:');
    readln(b);
  until (b>0)and(b<n);
  for c:=1 to b do
    begin
      a[c]:=random(40)-20;
      write(a[c]:3);
    end;
  writeln;
  write('Enter K:');
  readln(d);
  c:=1;
  while c<b do
    begin
      if a[c]*a[c+1]>0 then
        begin
          inc(c);
          e:=c;
          inc(b);
          repeat
            f:=a[e];
            a[e]:=d;
            d:=f;
            inc(e);
          until e=b;
          a[b]:=d;
          d:=a[c];
        end;
      inc(c);
    end;
  for c:=1 to b do
    write(a[c]:3);
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
Похожие ответы