Задать вопрос
17 апреля, 06:16

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

+3
Ответы (2)
  1. 17 апреля, 06:25
    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.
  2. 17 апреля, 08:23
    0
    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.

    Как-то так
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Задан массив натуральных чисел размером 30 элементов. Элементы массива могут принимать значения от 1 до 1000. Напишите программу в паскале ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы