Задан массив натуральных чисел размером 30 элементов.Элементы массива могут принимать значения от 1 до 1000.Напишите программу в паскале нахождения и вывода на экран суммы элементов самой длинной последовательности подряд идущи...

Задан массив натуральных чисел размером 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; 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.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы