Каждое число передаётся в виде отдельной текстовой строки, содержащей
Условие
По каналу связи передаётся последовательность положительных целых чисел Х₁, Х₂, ... все числа не превышают 1000, их количество заранее неизвестно. Каждое число передаётся в виде отдельной текстовой строки, содержащей десятичную запись числа. Признаком конца передаваемой последовательности является число 0. Участок последовательности от элемента Х_T до элемента X_(T+N) называется подъёмом, если на этом участке каждое следующее число больше или равно предыдущему, причем участок нельзя расширить, т. е.
- Т = 1 или Х_(T-1) > Х_T2) X_(T+N) — последний элемент последовательности или X_(T+N) > X_(T+N+1). Высотой подъёма называется разность X_(T+N) − Х_T. Подъём считается значительным, если высота подъёма больше величины минимального элемента этого подъема. Напишите программу, которая вычисляет количество значительных подъемов в заданной последовательности. Программа должна вывести результаты в следующей форме: Получено чисел: ...Найдено значительных подъемов: ... Вам предлагаются два задания, связанные с этой задачей: задание А и задание Б. Вы можете решать оба задания А и Б или одно из них по своему выбору.
Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Если решение одного из заданий не представлено, то считается, что оценка за это задание составляет 0 баллов.
Задание Б является усложненным вариантом задания А, оно содержит дополнительные требования к программе. Перед программой укажите версию языка программирования. А. Напишите на любом языке программирования программу для решения поставленной задачи, в которой входные данные будут запоминаться в массиве, после чего будут проверены все возможные пары элементов.
Обязательно укажите, что программа является решением задания А.Максимальная оценка за выполнение задания А - 2 балла. Б. Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик).Программа считается эффективной по времени, если время работы программы пропорционально количеству элементов последовательности N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Обязательно укажите, что программа является решением задания Б. Перед текстом программы кратко опишите алгоритм решения задачи. Пример входных данных: 14417212737911250 Пример выходных данных для приведённого выше примера входных данных:Получено чисел: 9Найдено значительных подъемов: 1 Пояснения для проверяющих.1. Задание Б является усложнением задания А. Если в качестве решения задания Б представлено решение задания А, то согласно приведённым ниже критериям, его оценка будет такой же, как если бы это решение было представлено в качестве решения задания А.2. Два задания и, соответственно, возможность для экзаменуемого представить две программы дают ученику возможность (при его желании) сначала написать менее сложное и менее эффективное решение (задание А), которое даёт ему право получить два балла, а затем приступить к поиску более эффективного решения. 3. Каждая из программ, представленных экзаменуемым (но не более двух), оценивается по нижеследующим критериям. В качестве итоговой оценки берётся наибольшая из двух оценок.
Формат задания
Решение по шагам
Как рассуждать
Решение. Ниже приведены примеры решения задания на языке Паскаль, на алгоритмическом языке и на языке Бейсик. Допускаются решения, записанные на других языках программирования. Пример правильной и эффективной программы на языке Паскаль:program с4_1; varn, up, х, start, last : integer;beginn: =0; up:=0;start:=1001; last:=1001; repeatreadln(x); n: =n+1;if x < last then beginif last > 2start then up:=up+1; start:=x; end;last:=x; until x = 0;writeln('Получено чисел: ', n-1);writeln('Найдено значительных подъемов: ', up);end.Пример правильной и эффективной программы на алгоритмическом языке:алг С4_1 начцел n, up, х, start, last n: =0 up: =0start:=1001 last:=1001 нцввод x n: =n+1если x < last toесли last > 2start to up:=up+1 все start:=x; всеlast:=x; кц при x=0вывод "Получено чисел: ", n-1, невывод "Найдено значительных подъемов: ", up, не кон Пример правильной и эффективной программы на языке Бейсик:DIM n, up, х, start, last AS INTEGERn=0up=0start=1001last=1001DOINPUT xn = n + 1IF x < last THENIF last > 2 * start THEN up = up + 1 start = x;END IF last = x LOOP UNTIL x = 0 PRINT "Получено чисел: "; n-1PRINT "Найдено значительных подъемов: up Приводим решение Игоря Кудашева на Python
Осталось ещё 1 шаг
Программа эффективна только по времени.a =…
Бесплатно · займёт минуту