135
кон
end
По приведенному алгоритму и основной части программы видно, что последовательность ввода-
вывода данных о товарах и результатов обработки полностью соответствует выбранному сценарию.
Загрузку исходных данных в выбранные массивы в соответствии с принятым представлением выполнят
два следующих вспомогательных алгоритма
алг «данные товаров»
tovar: 'данные товаров
нач
'
загрузка-товаров
restore tovs
от k = 1 до N цикл
for k = 1 to N
чmeнue(tv(k),s(k),m(k))
read tv$(k),s(k),m(k)
при tv(k) = «» то
if tv$(k) = «» then exit for
вывод (tv(k),s(k),m(k))
? tv$(k);s(k);m(k)
кцикл
next k
если k< Nmo N := k-1
if k < N then N = k-1
кон
return
Последний условный оператор изменяет верхнюю границу N массивов в том случае, если
фактическое число данных меньше числа мест в массивах, размещенных в памяти компьютера.
алг «данные остатков»
ostatok: 'данные остатков
нач
'
загрузка-остатков
restore osts
от k = 1 до N цикл
for k = 1 to N
чmeнue(tv(k),c(k),p(k))
read tv$(k),c(k),p(k)
при tv(k) = «» выход
if tv$(k) = «» then exit for
вывод (tv(k),c(k),p(k))
? tv$(k);c(k);p(k)
кцикл
next k
если k < N mo N := k-1
if k < N then N = k-1
кон
return
Подсчет выручки в соответствии с постановкой задачи по данным, введенным в эти массивы,
выполнят следующие вспомогательный алгоритм и подпрограмма:
алг «подсчет выручки»
vyruch: 'подсчет выручки
нач
'
S := 0
S = 0
от k = 1 до N цикл
for k = 1 to N
S := S+(c(k)-s(k)) *(m(k)-p(k))
S = S+(c(k)-s(k))*(m(k)-p(k))
кцикл
next k
кон
return
Лемма 3. Конечным результатом выполнения данного вспомогательного алгоритма будет сумма
S
N
= (с(1) - s(l))
(m(l) - р(1)) + ... + (c(N) - s(N))
(m(N) - p(N)).
Доказательство проводится с помощью индуктивных рассуждений. Первое присваивание S := 0
обеспечивает начальное значение суммы S
0
= 0.
О результатах k-го шага выполнения цикла можно сделать индуктивное утверждение
S
k
= S
k-1
+ (c(k)- s(k))-(m(k) - p(k)) = (с(1) - s(l))
(m(l) - p(l)) + ... + (c(k) - s(k))
(m(k) - p(k)).
|