Определить, чередуются ли в массиве положительные и отрицательные элементы - Pascal ABC
Формулировка задачи:
Нужно две программы по одному массиву
Дан массив {xi}, i=1,2,...,N.
1) Определить, чередуются ли в массиве положительные и отрицательные элементы (т.е. X1>0, x2<0 x3>0 итд, или x1<0, x2>0, x3<0 итд).
2) дано число a. Если в заданном массиве есть хотя бы один член, равный a, то получить сумму всех членов, следующих за первым таким членом, в противном случае дать сообщение об этом
Решение задачи: «Определить, чередуются ли в массиве положительные и отрицательные элементы»
textual
Листинг программы
var m:array[1..20] of integer;
n,i,a,i1,k,s:integer;
begin
repeat
write('Введите размер массива от 2 до 20 n=');
readln(n);
until n in [2..20];
writeln('Введите элементы массива');
for i:=1 to n do
begin
write('m[',i,']=');
readln(m[i]);
end;
writeln('Введенный массив');
for i:=1 to n do
write(m[i],' ');
writeln;
k:=0;
i:=1;
while (i<n)and(k=0) do
if m[i]*m[i+1]>=0 then k:=1
else i:=i+1;
if k=0 then writeln('Положительные и отрицательные чередуются')
else writeln('Положительные и отрицательные не чередуются');
write('Введите число для поиска a=');
readln(a);
i:=1;
k:=0;
while(i<=n)and(k=0)do
if m[i]=a then k:=i
else i:=i+1;
if k=0 then writeln('Числа ',a,' в массиве нет')
else if k=n then writeln('За первым числом ',a,' других элементов нет')
else
begin
s:=0;
for i:=k+1 to n do
s:=s+m[i];
writeln('Сумма элементов за первым числом ',a,'=',s);
end;
end.
Объяснение кода листинга программы
- Создается переменная
mтипаarray[1..20] of integer. Это означает, что мы создаем массив из 20 целых чисел. - Создаются переменные
n,i,a,i1,k,sтипаinteger. Они будут использоваться в цикле. - Запускается цикл
repeat, который будет выполняться до тех пор, покаn(размер массива) находится в диапазоне от 2 до 20. - Внутри цикла
repeatвыполняется запрос ввода размера массиваn. - После получения размера массива, начинается цикл
for, который будет выполнятьсяnраз. В каждой итерации этого цикла пользователю предлагается ввести элемент массива. - После ввода всех элементов массива выводится сам массив.
- Затем выполняется проверка условия
k=0. Если это условие истинно, значит положительные и отрицательные числа чередуются, и выводится соответствующее сообщение. Если условие ложно, значит положительные и отрицательные числа не чередуются, и выводится соответствующее сообщение. - Выполняется запрос ввода числа для поиска.
- Запускается цикл
while, который будет выполняться до тех пор, покаi(индекс текущего элемента) меньшеnиkравно 0. - Внутри цикла
whileвыполняется проверка условияm[i]==a. Если это условие истинно, то значениеkустанавливается равнымi. Если условие ложно, то значениеiувеличивается на 1. - После выхода из цикла
whileвыполняется проверка значенияk. Еслиkравно 0, то выводится сообщение о том, что число для поиска отсутствует в массиве. Еслиkравноn, то выводится сообщение о том, что после первого числа нет других элементов. Еслиkне равно ни одному из этих значений, то выводится сумма элементов за первым числом. - Конец программы.