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

2 задачи на сайте acmp НА PASCALABC.


2 задачи на сайте acmp НА PASCALABC.
2 задачи на сайте acmp НА PASCALABC.

Показать ответ
Ответ:
дашулькот
дашулькот
02.05.2021 18:27
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.

Как-то так
0,0(0 оценок)
Ответ:
Фрао
Фрао
02.05.2021 18:27
Проверено, работает на Паскаль АВС:

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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота