Тридцать центов за галлон — дело прошлое. Сорок центов за галлон — дело прошлое. Пятьдесят центов за галлон — дело прошлое. Сейчас[22] галлон бензина стоит шестьдесят центов, и, возможно, вскоре мы останемся вообще без горючего. Так что на повестке дня — анализ индивидуального расходования бензина.
Многие ведут журнал покупок бензина. Обычно туда записывают дату, показания счетчика пройденного пути, марку бензина, цену одного галлона, сколько галлонов куплено и общую стоимость. Три последние величины зависят друг от друга; эта зависимость не совсем точная из-за ошибок округления, но ее все же можно использовать для проверки правильности исходных данных. С помощью ЭВМ вы можете получить разнообразную статистическую информацию. Интересно вычислить такие производные величины, как средняя стоимость одного галлона, средний пробег на галлон, средний пробег за день, средняя стоимость пробега в одну милю, среднее время расходования одного галлона. Кроме того, хорошо было бы получить такую же информацию по каждой марке бензина и посмотреть, есть ли разница между марками. Таблица 16.1 — фрагмент реального журнала покупок бензина[23].
Таблица 16.1. Выдержка из реального журнала покупок бензина | |||||
Дата | Марка бензина | Пробег (в милях) | Цена галлона (в центах) | Количество галлонов | Сумма |
03/27/74 | Texaco | 24 370 | 59.9 | 13.5 | $8.00 |
04/05/74 | Texaco | 24 434 | 59.9 | 5.5 | $3.30 |
04/11/74 | Texaco | 24 596 | 59.9 | 8.2 | $4.88 |
04/23/74 | Mobil | 24 862 | 58.8 | 12.9 | $7.60 |
05/13/74 | Mobil | 25 057 | 61.9 | 13.9 | $8.60 |
06/11/74 | Arco | 25 239 | 62.9 | 12.5 | $7.85 |
07/12/74 | Texaco | 25 435 | 63.3 | 14.2 | $8.90 |
07/19/74 | Chevron | 25 713 | 58.8 | 12.4 | 87.27 |
07/28/74 | Mobil | 26 135 | 60.9 | 14.1 | $8.60 |
08/07/74 | Arco | 26 384 | 60.4 | 13.1 | $8.00 |
08/08/74 | Chevron | 26 712 | 59.9 | 13.3 | $7.90 |
08/16/74 | Arco | 26 997 | 60.9 | 13.6 | $8.30 |
08/22/74 | Mobil | 27 068 | 60.9 | 4.0 | $2.45 |
08/22/74 | Shell | 27 362 | 61.6 | 11.8 | $7.25 |
08/23/74 | Shell | 27 606 | 63.4 | 10.3 | $6.54 |
08/25/74 | Ericson | 27 913 | 60.9 | 13.6 | $8.29 |
08/26/74 | American | 28 163 | 60.9 | 10.8 | $6.55 |
08/26/74 | American | 28 487 | 57.9 | 14.0 | $8.10 |
08/27/74 | DX | 28 771 | 53.9 | 12.2 | $6.60 |
08/28/74 | Conoco | 29 114 | 59.9 | 14.8 | $8.90 |
08/28/74 | Texaco | 29 337 | 58.9 | 10.2 | $6.00 |
08/28/74 | Phillips | 29 661 | 60.9 | 13.9 | $8.35 |
08/29/74 | Chevron | 29 912 | 65.9 | 10.8 | $7.10 |
08/29/74 | Shell | 30 147 | 65.9 | 10.3 | $6.70 |
08/30/74 | Texaco | 30 317 | 60.9 | 7.6 | $4.60 |
08/31/74 | Exxon | 30 643 | 56.9 | 13.3 | $7.60 |
09/06/74 | Shell | 30 878 | 59.9 | 13.2 | $7.90 |
09/10/74 | Shell | 31 182 | 59.9 | 13.0 | $7.80 |
09/14/74 | Exxon | 31467 | 57.9 | 13.1 | $7.60 |
09/18/74 | Arco | 31 711 | 57.9 | 10.1 | $5.85 |
09/24/74 | Arco | 31 984 | 57.9 | 12.5 | $7.25 |
09/27/74 | Arco | 32 225 | 57.9 | 9.9 | $5.70 |
10/01/74 | Arco | 32 455 | 57.9 | 9.8 | $5.65 |
Будем считать в данной задаче, что каждой новой записи в журнале соответствует новая полная заправка автомобиля. Первая запись в журнале устанавливает точки отсчета дат и пройденного пути; никак иначе она не используется. Следующие записи фиксируют пробег и расходы на очередную заправку, показывая объем сожженного горючего и количество пройденных миль после предыдущей заправки. Было бы также любопытно печатать текущие средние значения за самое последнее время, чтобы заметить краткосрочные изменения.
Тема. По данным, имеющимся в журнале покупок бензина, напечатайте разнообразную контрольную статистику, показывающую водителю, во что обходится эксплуатация автомобиля. Исходные данные о каждой покупке — это дата, марка бензина, показание счетчика пройденного пути, цена одного галлона, сколько галлонов куплено и общая стоимость. Выводимая информация должна повторять исходную и, кроме того, включать в себя такие показатели, как пробег между заправками, пробег на один галлон, стоимость пробега в одну милю, стоимость одного галлона, стоимость одного дня, время расходования одного галлона. Все указанные показатели следует получать для каждой заправки и усреднять двумя способами: за небольшой срок и за все время наблюдений. Кроме того, соберите данные по каждой марке бензина и напечатайте соответствующие средние значения. Не ограничивайте число различных марок.
Указания исполнителю. Предлагаемая программа не особенно трудна. Для печати долларовых величин, как и в некоторых других задачах, нужна некоторая изобретательность. Требование неограниченности числа марок означает, что их нельзя задать заранее, поэтому нужна простая расширяемая таблица марок и связанной с ними информации.
Инструментовка. И снова очевидный кандидат — Кобол, созданный как раз для решения подобных задач. Если вам удастся найти достаточно мощный язык для генерации отчетов, уместно научиться им пользоваться. Можно ислользовать и любой процедурный алгебраический язык.
Длительность исполнения. Одному исполнителю на 1 неделю.