Program rabota_s_massivom; 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.
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.
Как-то так
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.