• Задан массив натуральных чисел размером 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.

Ответы 2

  • 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.Как-то так
    • Автор:

      salemafpm
    • 5 лет назад
    • 0
  • Проверено, работает на Паскаль АВС: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.
    • Автор:

      gusbvyy
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years