
Вопрос задан 16.01.2019 в 00:23.
Предмет Информатика.
Спрашивает Шахмарданов Эльвар.
Задан массив натуральных чисел размером 30 элементов.Элементы массива могут принимать значения от 1
до 1000.Напишите программу в паскале нахождения и вывода на экран суммы элементов самой длинной последовательности подряд идущих нечетных элементов массива.Если такой последовательности не существует, то программа должна вывести об этом сообщение.Если таких последовательностей несколько, то суммировать можно элементы любой из них.Входные данные:program rabota_s_massivom;const N=30;var M: array[1..N] of integer;i,k,s,kmax,reserve:integer;beginfor i:=1 to N doreadln(M[i]);......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.
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.



Отвечает Кохтарева Ксюша.
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.
Как-то так
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.
Как-то так


Топ вопросов за вчера в категории Информатика

Информатика 565

Информатика 25

Информатика 22

Информатика 27

Информатика 34

Информатика 58

Информатика 63

Информатика 23
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili