Книга: Этюды для программистов

16. Горючие слезы, или Учет расхода бензина

16.

Горючие слезы,

или Учет расхода бензина

Тридцать центов за галлон — дело прошлое. Сорок центов за галлон — дело прошлое. Пятьдесят центов за галлон — дело прошлое. Сейчас[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 неделю.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.243. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз