В одномерном массиве вставить новый элемент между всеми парами элементов, имеющими разные знаки - Pascal
Формулировка задачи:
В одномерном массиве, элементы которого – целые числа произвести следующие действия 1. вставить новый элемент между всеми парами элементов , имеющими разные знаки.
Решение задачи: «В одномерном массиве вставить новый элемент между всеми парами элементов, имеющими разные знаки»
textual
Листинг программы
const nmax=50;
var a:array[1..2*nmax] of integer;
n,i,j:byte;
c:integer;
begin
randomize;
repeat
write('Размер массива от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
writeln('Исходный массив');
for i:=1 to n do
begin
repeat
a[i]:=-20+random(41);
until a[i]<>0;{сделаем массив без нолей, ибо нерлнятно с его знаком}
write(a[i]:4)
end;
writeln;
write('Введите число для вставки c=');
readln(c);
i:=2;
while i<=n do
if a[i]*a[i-1]<0 then
begin
n:=n+1;
for j:=n downto i+1 do
a[j]:=a[j-1];
a[i]:=c;
i:=i+2;
end
else i:=i+1;
writeln('Вставка числа ',c,' между числами с разными знаками');
for i:=1 to n do
write(a[i]:4);
end.
Объяснение кода листинга программы
- Объявляется константа
nmaxсо значением 50. - Объявляются переменные: массив
aразмерности от 1 до2*nmaxи целочисленного типа, переменнаяnцелочисленного типа для хранения размера массива, и переменные целочисленного типаi,jдля использования в циклах, и переменнаяcцелочисленного типа для хранения числа, которое будет вставлено в массив. - Используется функция
randomize, чтобы инициализировать генератор случайных чисел. - Вводится значение
nс помощью циклаrepeat-until, чтобы проверить, что оно находится в диапазоне от 2 доnmax. - Выводится сообщение
Исходный массив. - Создается цикл
for, чтобы заполнить исходный массив случайными числами от -20 до 20, исключая значение 0. - Запрашивается число
c, которое будет вставлено в массив. - Создается переменная
iи внутри циклаwhileпроисходит перебор элементов массива до тех пор, пока переменнаяiменьше или равнаn. Проверяется условие: если произведение элементовa[i]*a[i-1]меньше нуля (т.е. элементы имеют разные знаки), то происходит вставка числаcмежду ними. В противном случае переменнаяiувеличивается на 1. - Выводится сообщение
Вставка числа,c,между числами с разными знаками. - Создается цикл
forдля вывода измененного массива.