Задан массив натуральных чисел размером 30 элементов.Элементы массива могут принимать значения от 1 до 1000.Напишите программу в паскале нахождения и
5-9 класс
|
вывода на экран суммы элементов самой длинной последовательности подряд идущих нечетных элементов массива.Если такой последовательности не существует, то программа должна вывести об этом сообщение.Если таких последовательностей несколько, то суммировать можно элементы любой из них.Входные данные:
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.
Другие вопросы из категории
Витей, Питеровец между Юрой и Толей,напротив Питеровца сидели Пермк и Алеша. Коля не был никогда в Питере.Юра не был в Москве и Томске.А Томич с Толей регулярно переписываются.В каком городе живет каждый из мальчиков?
Вот в степень возвести ^ этот знак, а корень?
Мне говориле что писать:sqr,qsrt,exp, и все 3 варианта неподходят, может пишу что то нетак, привидите примеры , а запишу проверю позязя :)
Гбайт за шесть месяцев.На компьютере одновременно обнаружены сразу все четыре вируса.Сколько Гбайт они заполнят за один месяц?
Читайте также
целочисленный массив из 30 элементов. Элементы массива могут принимать значения
от
0 до 1000. Опишите на русском языке или на одном из языков программирования
алгоритм, который находит и выводит среднее арифметическое всех элементов
массива, имеющих нечётное значение. Гарантируется, что хотя бы один такое
элемент в массиве есть.
Дан целочисленный массив из 31 элемента, в котором записаны значения температуры воздуха в марте. Элементы массива могут принимать значения от (-20) до 20. Опишите на русском языке и на языке Паскаля алгоритм, который подсчитывает и выводит среднюю температуру почетным дням месяца.
д количество чисел в последовательности, а затем сами числа.Количество чисел не превышает 1000. Введённые числа не превышают 30 000.Программа должна вывести одно число – количество двузначных чисел в заданной последовательности натуральных чисел.
рут тех, чей рост не менее 180 см. Опишите на русском языке или на одном из языков программирования алгоритм, который подсчитывает и выводит минимальный рост игрока баскетбольной команды. Гарантируется, что хотя бы один ученик играет в баскетбольной команде.Нужно паскаль
на одном из языков программирования алгоритм, который подсчитывает и выводит средний балл учащихся, сдавших экзамен (получивших оценку более 20 баллов). Гарантируется, что хотя бы один ученик в классе успешно сдал экзамен.