Задан массив натуральных чисел размером 30 элементов.элементы массива могут принимать значения от 1 до 1000.напишите программу в паскале нахождения и вывода на экран суммы элементов самой длинной последовательности подряд идущих нечетных элементов массива.если такой последовательности не существует, то программа должна вывести об этом сообщение.если таких последовательностей несколько, то суммировать можно элементы любой из них.входные данные: program rabota_s_massivom; const n=30; var m: array[1..n] of integer; i,k,s,kmax,reserve: integer; begin for i: =1 to n do readln(m[i]); end.
Program rabota_s_massivom;
uses crt;
label metka;
const N=30;
var M: array[1..N] of integer;
i,k,s,kmax,reserve:integer;
begin
for i:=1 to N do
begin
write('Введите ',i,'-й элемент: '); readln(M[i]);
end;
writeln('Массив:');
for i:=1 to N do
begin
write(M[i],' ');
end;
k:=1; {Число элементов в текущей последовательности. Изначально считаем, что последовательность состоит из одного (первого) элемента}
{Ищем первый нечётный элемент:}
repeat
reserve:=reserve+1;
until (m[reserve] mod 2 = 1) or (reserve = 30);
writeln(reserve);
if (m[reserve] mod 2 = 0) and (reserve = 30) then
begin
writeln('Все числа чётные. Искомая последовательность не существует');
goto metka;
end;
s:=M[reserve]; {Сумма элементов текущей последовательности пока что равна первому нечётному элементу}
kmax:=0; {Наибольшая длина последовательности}
for i:=reserve+1 to n do {Перебираем все элементы, начиная с первого нечётного}
begin
if (m[i] mod 2 = 1)
then {Если текущее число всё ещё нечетно}
begin
s:=s+m[i]; {Увеличиваем сумму последовательности}
k:=k+1 {Увеличиваем счётчик длины последовательности}
end
else {Если встретилось четное число}
begin
if k>kmax then {Проверяем, не является ли полученная последовательность длиннее нашего максимума}
begin {Если да:}
kmax:=k; {Запоминаем новую длину последовательности}
reserve:=s {Запоминаем сумму её элементов}
end;
k:=0; {Устанавливаем длину новой последовательности равной 0}
s:=0 {Сумма элементов этой последовательности тоже пока что = 0}
end;
end;
if k>kmax then {Если самая длинная последовательность находится в конце массива, проверим ещё раз текущий максимум}
begin
kmax:=k;
reserve:=s
end;
writeln('самая длинная последовательность нечётных чисел состоит из ',kmax,' элементов');
writeln('и сумма этой последовательности равна ',reserve);
metka: end.
const
N = 10;
var
M : array[1..N] of integer;
i, max, nowMax, maxIndex, index, summ : integer;
begin
for i := 1 to N do
readln(M[i]);
for i := 1 to N do
begin
if M[i] mod 2 > 0 then
begin
if nowMax = 0 then
index := i;
nowMax := nowMax + 1;
if (i = N) and (nowMax > max) then
begin
max := nowMax;
maxIndex := index;
end;
end
else
if nowMax > max then
begin
max := nowMax;
maxIndex := index;
nowMax := 0;
end;
end;
if max = 0 then
writeln('Не существует')
else
begin
summ := 0;
for i := maxIndex to maxIndex + max - 1 do
summ := summ + M[i];
writeln('Сумма: ', summ);
end;
end.
Как-то так