Потоковая обработка

Приматы хорошо умеют работать с потоками

Приматы хорошо умеют работать с потоками

Так называют группу задач в которых производится циклическая обработка большого объёма данных следующих во входном потоке без их запоминания в программе. К таким задачам относится, например, суммирование всех чисел из входного потока. А также поиск максимума или минимума этих чисел. Существенным признаком таких задач является однократный просмотр каждого элемента данных без возможности вернуться к нему в последующем.
Для решения этих задач важно научиться читать входной поток до конца. Поскольку мы пока ещё не рассматривали объектно-ориентированные возможности языка, обойдёмся функцией scanf. Как Вы уже должны знать, эта функция возвращает значение соответствующее количеству полей данных, которые были успешно прочитаны и присвоены соответствующим переменным. Если чтение первого же поля было не успешным, то возвращается -1. Хотя проверять лучше на совпадение со специальной именованной константой EOF, которая задана в заголовочном файле как -1. Так будет легче читать программу.
Начинать решать задачу можно с такого кода:

Дальше будем рассматривать вариант с вводом через функцию scanf():

Выполнить код

Задача поиска максимума (минимума) чуть сложнее. Здесь не так просто присвоить начальное значение (см. строку 4). И еще нам понадобится условный оператор (строка 9).

Выполнить код

Если Вам кажется, что всё совсем просто, то проверьте себя.
Задача 1. Измените код последнего примера, таким образом, чтобы вычислялся и максимум, и минимум. Как правильно присвоить начальные значения переменным?

Выполнить код
Питон: А что будет если убрать слово else в 11-й строке?
Землеройка: Программа будет давать правильный ответ, но будет выполнять лишние проверки.
Питон: И много проверок экономит нам else?
Землеройка: Если последовательность строго возрастает, то экономия будет самой большой. Вместо проверки каждого введенного числа, не понадобится вообще ни одной. Т.е. 11-я строка никогда не будет выполняться.
Питон: Хм. А если последовательность будет строго убывающей, то никакой экономии?
Землеройка: Никакой. Даже если просто, наибольший элемент стоит первым, то экономии не будет.
Питон: Я вот подумал, что если последовательность строго убывает, то лучше сначала минимум проверять, а в else — максимум. Тогда снова большая экономия будет.
Землеройка: А как угадать?
Питон: Наверное, никак.

Если у Вас есть информация о каких-либо характеристиках входных данных на которых будет работать Ваша программа, постарайтесь это использовать для написания более эффективного кода.

Задача 2. Измените код последнего примера, таким образом, чтобы вычислялся и максимум, и минимум, и сумма всех чисел. Как правильно присвоить начальное значение сумматору?

Выполнить код

Задача 3 Решите предыдущую задачу с использованием цикла «for».

Выполнить код
Правда код мне не кажется красивым. Т.е. наглядная структура программы, свойственная оператору for, вроде проявляется, но как-то «кривовато».

Если со всем разобрались, то можно приступать к решению задач своего варианта. Или можно посмотреть как решали задачи другие студенты:

Решения задач

  • A153
    Опубликовано 21/10/2014 Куленюк Денис Віталійович

    Даны натуральное число a_{n}{x}^{n} + a_{n-1}{x}^{n-1} + ...

  • A159
    Опубликовано 15/11/2014 Карташов Денис Геннадійович

    Задача: Даны натуральное число n, действительные числа . Получить b_{i} = a_{i ...

  • A162
    Опубликовано 15/10/2014 Калачьов Андрій Сергійович

    Задача:  Даны натуральные числа  a_{1}, … ...

  • A166
    Опубликовано 20/10/2014 Божик Семен

    Задача:  Дано натуральное число  следующим образом: { b }_{ 1 }={ a ...

  • A278
    Опубликовано 16/03/2016 Кудымовская Вика

    Задача A278 Условие задачи Даны натуральные числа .   Тестирование № Входные данные Выходные данные 1. 1 2 4 -1 -0.4 2. 1 2 3 ...

  • A300
    Опубликовано 11/03/2016 Таран Таня

    There is a sequence of real numbers (read to the end of the input stream). You need to ...

  • e-olimp 5074. Степени вершин по спискам ребер
    Опубликовано 02/05/2015 Карташов Денис Геннадійович

    Задача: Неориентированный граф задан списком ребер. Найдите степени всех вершин графа. Технические условия: Входные данные: Входной файл содержит числа (1 \leq n \leq ...

  • e-olimp 7365
    Опубликовано 30/09/2015 Настя Ивасенко

    Задача «Молоко и пирожок» Ученикам первого класса дополнительно дают стакан молока и пирожок, если вес первоклассника менее 30 кг. В первых классах ...

  • e-olymp 1000. Задача a + b
    Опубликовано 20/12/2017 Александра Рябова

    Задача Вычислите сумму . Входные данные В каждой строке задано два целых числа \bigl| \textbf {a} ...

  • e-olymp 1128. Проблема Лонги
    Опубликовано 14/05/2018 Алиса Ворохта

    Задача Лонги хорошо разбирается в математике, он любит задумываться над трудными математическими задачами, которые могут быть решены при помощи некоторых изящных ...

  • e-olymp 1154 Кружок хорового пения
    Опубликовано 16/05/2018 Андрей Святозар Чернецкий

    Задача В некотором учебном заведении функционирует кружок хорового пения. Начало кружка всегда происходит единообразно: по сигналу руководителя кружка все участников ...

  • e-olymp 1317. Дни рождения
    Опубликовано 02/01/2018 Данила Савчак

    Задача Известно, что в группе из или более человек вероятность того, что хотя бы у двух из них дни рождения ...

  • e-olymp 176. Выбор вождя
    Опубликовано 09/05/2018 Иван Василевский

    Условие задачи Орки – одна из рас, населяющих мир Драэнор. Не отличаясь высоким интелектом, орки все же славятся своею силой и ...

  • e-olymp 247. Несчастливый автобус
    Опубликовано 26/12/2017 Георгий Мартынюк

    Задача Витя живёт довольно далеко от школы, поэтому, чтобы не опаздывать на уроки, он ездит на автобусе. Витя — очень наблюдательный ...

  • e-olymp 419. Задача 3n + 1
    Опубликовано 31/12/2017 Амир Аль-Омари

    Задача Рассмотрим следующий алгоритм генерации последовательности чисел: Visual Basic 123456 input nprint nif n = 1 then STOPif n is odd then n = 3 * n + 1else n = n / 2GOTO 2 Например, для  = 22 будет сгенерирована ...

  • e-olymp 4281. Невнимательность
    Опубликовано 02/01/2018 Андрей Лисовой

    Задача Степан успешно прошёл собеседование и вот уже как четыре месяца работает в одной из самых престижных ИТ компаний. Пришло время ...

  • e-olymp 441. Наиболее круглое число
    Опубликовано 25/02/2018 Бондаренко Кирилл

    Наиболее круглое число Назовем число более круглым, чем другие числа, если оно имеет больше заключительных нулей. Если два числа имеют одинаковое ...

  • e-olymp 4812. Функция
    Опубликовано 01/01/2018 Александр Волынец

    Задача Функция определена следующим образом: Вычислите значение . Входные данные Каждая строка содержит действительное значение x ...

  • e-olymp 49. Кот учёный
    Опубликовано 09/05/2018 Костя Григорян

    Задача Уезжая из дома, поэт оставлял коту, прикованному к дубу цепью длиной $l$, $n$ рыбин. Зная координаты головы и хвоста каждой ...

  • e-olymp 5082. Степени вершин
    Опубликовано 19/04/2016 Сплошнов Кирилл

    Условие Задача взята с сайта e-olymp. Дан простой неориентированный невзвешенный граф. Требуется для каждой вершины подсчитать ее степень. Входные данные В первой строчке находится ...

  • e-olymp 520. Сумма всех
    Опубликовано 26/12/2017 Даниил Крутоголов

    Сумма всех Вычислите сумму всех заданных чисел. Входные данные Содержит  по абсолютной величине. Выходные данные Выведите сумму всех ...

  • e-olymp 571. НОД
    Опубликовано 27/12/2017 Яна Колчинская

    Задача Найти НОД (наибольший общий делитель ) $n$ чисел. Входные данные Первая строка содержит количество чисел . Во ...

  • e-olymp 6350. Изированная вода
    Опубликовано 09/01/2018 Мороз Дима

    Задача В Бердичеве ещё в советские времена продавалась знаменитая изированная вода. Собственно это была обычная газировка на разлив, но продавал её ...

  • e-olymp 7365. Молоко и пирожок
    Опубликовано 16/12/2017 Данилов Андрей

    Задача Ученикам первого класса дополнительно дают стакан молока и пирожок, если вес первоклассника менее кг. В первых классах школы учится ...

  • e-olymp 7368. Средний балл для фигуристов
    Опубликовано 02/01/2018 Валерия Ларикова

    Задача Спортсменам — фигуристам судей выставляют оценки. Технический работник соревнований изымает все максимальные и все минимальные оценки, а для остальных ...

  • e-olymp 904. Увеличить на 2
    Опубликовано 07/10/2015 Настя Панько

    Задача Задан одномерный массив каждый неотрицательный элемент массива. Входные данные В первой строке задано натуральное число ...

  • e-olymp 907. Первый не больший чем 2.5
    Опубликовано 22/04/2018 Карина Миловская

    Задача Задан массив вещественных чисел. Найти первый элемент массива, значение которого не превышает 2.5. Входные данные В первой строке задано количество элементов массива ...

  • MS 7. Средняя зарплата
    Опубликовано 28/03/2017 Андреев Даниил

    Задача Во входном потоке следует заранее неизвестное количество строк, в каждой из которых указана фамилия и величина зарплаты одного из сотрудников. ...

  • MS1. Количество чисел в потоке
    Опубликовано 24/11/2016 Антон Куперман

    Задание Сосчитайте количество чисел во входном потоке. Тесты Вход Выход 20 16 11 3 17 22.4 41.9 74.5 4 122 347 1567 21 40 5 13 28 17 8 2 5 abc 123 ...

  • MS10. Зашифровка текста
    Опубликовано 08/03/2017 Иванна Ялымова

    Задача Зашифруйте текст из входного потока, заменяя каждый символ результатом сложения по модулю два его кода и кода предыдущего зашифрованного символа. ...

  • MS12. Линейные уравнения
    Опубликовано 24/12/2017 Сытников Дан

    Условие задачи Каждая пара чисел входного потока задает некоторое линейное уравнение. Выпишите через запятую решения этих уравнений (если это возможно). Тесты № Входные данные Выходные ...

  • MS13. Решение квадратных уравнений
    Опубликовано 16/12/2016 Валентина Андриеш

    Условие задачи: Каждая четвёрка чисел входного потока представляет собой квадратное уравнение в такой форме $ax^2+bx+c=d.$ Выпишите через запятую решения этих уравнений ...

  • MS15. Зашифровка и расшифровка текста
    Опубликовано 12/12/2016 Эммануил Прокопов

    Для решения задания MS15 необходимо, чтобы предыдущее уже было сделанным, однако на момент публикации оно таковым не является, потому данная ...

  • MS17. Самосинхронизирующийся скремблер
    Опубликовано 11/12/2016 Вадим Гордийчук

    Задача Рассматривая входной поток как последовательность бит, зашифруйте его при помощи восьмибитового самосинхронизирующегося скремблера. Начальное значение и обратные связи скремблера должны ...

  • MS2. Сумма чисел во входном потоке
    Опубликовано 23/04/2017 Роман Саркисян

    Условие Сосчитайте сумму чисел во входном потоке. Тесты Ввод Вывод 1 2 3 4 5 6 21 12 13 14 39 1-100 5050 C++ 1234567891011 #include <iostream>using namespace std; int main() {    double x, S=0;    while( ...

  • MS9. Шифрование символов
    Опубликовано 29/08/2017 Курьянов Павел

    Задача Зашифруйте текст из входного потока, заменяя каждый символ результатом сложения по модулю два его кода и кода предыдущего символа текста. ...

  • А136в
    Опубликовано 03/11/2014 Янішевська Альона Русланівна

    Задача. Даны натуральное число . Тесты: Результат Комментарий 7 2 -1.1 4 -3.4 ...

  • А136д
    Опубликовано 09/11/2014 Швандт Максим Альбертович

    Задача: Даны натуральное число . Вычислить: ; Тесты: n a result 0 1, 2 error: out of range 2 5, 8  89 3 6, 13, 4  221 4 1, 2  error: ...

  • А136е
    Опубликовано 26/11/2014 Чежеумова Анна

    Задача: Даны натуральные числа . Тест: n s p Комментарий 2 3 4 7 12 Пройден 4 1 3 ...

  • А136ж
    Опубликовано 06/11/2014 Царев Николай Александрович

    Задача: Даны натуральное число Вычислить:  { a }_{ 1 ...

  • А136з
    Опубликовано 19/11/2014 Фесенко Катерина Володимирівна

    Задача Вычислить: Тест n последовательность sum(wolframalpha) 2 0 0 0 2 5 8 -1 3 5 8 12 -3 4 1 2 3 24  1  5  0 0 0 2 3  0, 058333 C++ 123456789101112131415161718192021 #include <iostream>#include <math.h>using namespace std; int main() ...

  • А136и
    Опубликовано 28/06/2015 Танащук Григорій Русланович

    Задача. Даны натуральное число n, действительные числа Вычислить Тест Число-n Действительные ...

  • А136к
    Опубликовано 05/11/2014 Стеблинський Ігор Віталійович

    Задача. Даны натуральное число . Вычислить:  Тесты: n введенные результат 3 1 2 3 72 4 0 0 0 0 0 4 -5 -7 -3 -1 512 4 0.5 2.5 -0.7 2.6 48.02 3 -64 -128 ...

  • А136л
    Опубликовано 24/10/2014 Сорокина Полина

    Задача: Даны натуральное число . 4 -5 2 4 -3.6 — — — — 12 8 -5 0.2 -3.2 0.5 -1.25 20 2 80 80 3 4 4 0 — — — — — 0 5 3 8 6 2.8 1.3 — — — 22.894541 С++: C++ 12345678910111213141516 #include <stdio.h>#include <math.h> int main(void) { int ...

  • А136м
    Опубликовано 23/11/2014 Сіренко Валерія Сергіївна

    Задача. Даны натуральное число  . Вычислить: Тест последовательность результат (wolframalpha) 1 0 0 1 1000 0.82688 1  -100 0.505366 3 -100 1000 -100 0.89397 5 1 2 3 4 5 0.650287 Я показала , что ...

  • А137а
    Опубликовано 02/11/2014 Марченко Філіп Олександрович

      Задача:  Даны натуральное число . Вычислить: . Тесты:  Кол-во элементов result в каждой итерации 7 1, 2, 3, 4, 5, 6, 7 1, 3, ...

  • А137б
    Опубликовано 09/10/2014 Нарусевич Никита Мирославович

    Задача: Даны натуральное Значения Результат 53 4 6 -1 1.2 8 0 9 9 12 18 -3 3.6 C++ 12345678910111213141516 #include <iostream>using ...

  • А137в
    Опубликовано 29/10/2014 Недомовний Владислав

    Задача. Даны натуральное число . Тесты. n \left|a_{1} \right|, \left|a_{1}+a_{2} \right|, … , \left|a_{1}+…+a_{n} ...

  • А137г
    Опубликовано 01/12/2014 Носуленко Марк

    Даны натуральное число . Вычислить: . Решение. Вводим переменную (куда будем ...

  • А137д
    Опубликовано 30/10/2014 Оніщенко Олександр

    Задача: Даны натуральное число . Вычислить: Тесты: -a_1, ...

  • А137е
    Опубликовано 28/11/2014 Осецимський Анатолій Вадимович

    Даны натуральные . Вывести: . n a1 a2 a3 a4 Input: 4  1 2 3 4 Output: 2.00 4.00 9.00 28.00 Input: 4 0.1 0.2 0.3 0.4 Output: 1.10 2.20 6.30 24.40 C++ 123456789101112131415 #include <iostream>using namespace std; int main() {    int n;   ...

  • А137е(а)
    Опубликовано 22/10/2014 Осецимський Анатолій Вадимович

    Даны натуральные . Вывести: . Input : 1 2 3 4 Output: 2.00 4.00 9.00 28.00 Input : 0.1 0.2 0.3 0.4 Output: 1.10 2.20 6.30 24.40 C++ 1234567891011121314 #include <iostream>using ...

  • А155
    Опубликовано 20/12/2014 Ковальський Олександр Дмитрович

    Задача. Даны натуральное число $n$, действительные числа $x_1, \ldots, x_n, $ где Вычислить: Тесты. Ввод Вывод $n$ $x_1, \ldots, x_n$ $k$ 2 1 1 1.5 3 0.5 1 ...

  • А156 б
    Опубликовано 28/10/2014 Кібакова Надія Олександрівна

    Задача Даны натуральное число )  . Вычислить: Код C++ А ...

  • А156а
    Опубликовано 30/10/2014 Кваша Дар`я Михайлівна

    Задача. Даны натуральное число . Вычислить: . Тесты: Ввод Вывод Комментарий 6 1 1 1 1 1 1 256 Пройден 9 1 ...

  • А161
    Опубликовано 14/10/2014 Карагяур Мілан Сергійович

    Задача: Даны натуральное число n, действительные числа . 7 1 ...

  • А165а
    Опубликовано 02/11/2014 Бровко Ілля

    Задача Даны действительные числа  есть хотя бы одно отрицательное число. Пусть ...

  • А165б
    Опубликовано 21/10/2014 Бронфен-Бова Роман

    Задача: Даны действительные числа – члены ...

  • А165в
    Опубликовано 03/11/2014 Вустянюк Ігор Дмитрович

    Задача Даны действительные числа   a_1, a_2, ...

  • А165г
    Опубликовано 12/11/2014 Григорян Артак

    Даны действительные числа  есть хотя бы одно отрицательное ...

  • А165ж
    Опубликовано 22/10/2014 Денисова Ольга

    Задача Даны действительные числа    … есть хотя бы одно отрицательное число. ...

  • А165з
    Опубликовано 12/10/2014 Зелінський Вячеслав Олександрович

    Даны действительные числа . Известно, что … есть хотя бы одно отрицательное число. ...

  • А165и
    Опубликовано 08/10/2014 Іванов Вячеслав Володимирович

    Задача: Даны действительные числа и что среди есть хотя бы одно ...

  • А165к
    Опубликовано 09/10/2014 Ілларіонова Марія Валеріївна

    Задача А165к. Даны действительные числа  есть хотя бы одно отрицательное ...

  • А170
    Опубликовано 28/10/2014 Байков Дмитро

    Задача. Даны натуральные числа — это измеренные в сотых долях ...

  • Ю4.33
    Опубликовано 03/11/2014 Вустянюк Ігор Дмитрович

    Задача Для заданной матрицы   \left \| A \right \| = \max_{i=1,m} \sum_{k=1}^{n} \left | ...

Добавить комментарий