Задать вопрос
2 июня, 08:01

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

+4
Ответы (2)
  1. 2 июня, 09:41
    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.

    Как-то так
  2. 2 июня, 10:08
    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.
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Задан массив натуральных чисел размером 30 элементов. Элементы массива могут принимать значения от 1 до 1000. Напишите программу в паскале ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Какие описания массивов являются правильными с точки зрения компилятора языка Pascal? var a1: array[-1000 ... 50] of integer; const m1 = 20; m2 = m1*100; var a6: array[m1 ... m2] of - 200 ... 200; var a2: array[200 ...
Ответы (2)
Укажите верное описание целочисленного массива mass, состоящего из 10 элементов. Интервал значений элементов [0; 100] 1) var mass:array of integer; 2) var mass:array[1 ... 10] of integer; 3) var mass:array[0 ... 100] of integer; 4) var mass:array[0 .
Ответы (1)
Program z17; const n = 60; var c: array [1 ... n] of integer; k, i:integer; Begin randomize; k:=0; for i:=1 to n do c: = random (21) - 10; if i mod 4 = 0 then if c=0 then k:=k+c[i]; end; end; end; writeln (k) ; end.
Ответы (1)
1. Какие из приведенных описаний являются неправильными и почему? • var a: array [1 ... 20] of integer; • type myarray=array [1 ... 20]; var b: myarray; • var sd: array [1 ... n] of integer; • var dd: array[1] of integer;
Ответы (1)
Уровень B. Задача M. Две одинаковые цифры рядом Напишите программу, которая определяет, верно ли, что введённое число содержит две одинаковых цифры, стоящие рядом (как, например, 221). Входные данные Входная строка содержит одно натуральное число.
Ответы (1)