Вставить число к между всеми соседними элементами, имеющими одинаковый знак - 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.
Объяснение кода листинга программы
- Создается переменная n, которая представляет собой количество элементов в массиве a.
- Создается переменная a, которая представляет собой массив из 2*n элементов типа integer.
- Создаются переменные b, c, d, e, f, которые представляют собой входные данные для программы.
- Запускается цикл repeat, который продолжается до тех пор, пока не будет введено корректное значение для b (больше 0 и меньше n).
- Внутри цикла for c:=1 до b do выполняется цикл, который продолжается до тех пор, пока c не станет равным b.
- Внутри цикла for c=1 до b do выполняется блок кода, который вставляет значение d между элементами a[c] и a[c+1] при условии, что a[c]*a[c+1]>0.
- После вставки значения d между элементами a[c] и a[c+1] обновляется значение e и увеличивается значение b.
- Повторяется шаг 7 до тех пор, пока e не станет равным b.
- После того, как значение d было вставлено между элементами a[c] и a[c+1], обновляется значение a[b] и увеличивается значение d.
- Цикл for c=1 до b do выводит значение a[c].
- Запускается цикл repeat, который продолжается до тех пор, пока не будет введено корректное значение для d (больше 0 и меньше n).
- После ввода корректного значения для d, запускается цикл while c<b do, который повторяется до тех пор, пока c не станет равным b.
- Внутри цикла while c=1 до b do выполняется блок кода, который вставляет значение d между элементами a[c] и a[c+1] при условии, что a[c]*a[c+1]>0.
- После вставки значения d между элементами a[c] и a[c+1] обновляется значение e и увеличивается значение b.
- Повторяется шаг 14 до тех пор, пока e не станет равным b.
- После того, как значение d было вставлено между элементами a[c] и a[c+1], обновляется значение a[b] и увеличивается значение d.
- Цикл for c=1 до b do выводит значение a[c].
- Выводится значение k.
- Запускается цикл repeat, который продолжается до тех пор, пока не будет введено корректное значение для k (больше 0 и меньше n).
- После ввода корректного значения для k, программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д