Товар цена кол-во
Кон
Кцикл
Цикл
Нач
вывод («список сотрудников:») список сотрудников:
s := 0: k := 0S0 = 0 [ k = 0 ]
чтение (fam$, dl$, z)
при fam$ = «» выход
вывод (fam$, dl$, z) <famk> <dlk> <zk> }*
k:=k+ 1[ k= (1...N) ]
s := s*(k - 1)/k + z/k sk = sk - 1×(k - 1)/k + zk/k
zsr = s zsr = sN
вывод («средняя з/nлama=»,zsr) средняя з/плата= <zsr>
Сравнение результатов выполнения программы с описанием метода вычисления и выбранного сценария подтверждает их соответствие друг другу и как следствие правильности выбранного метода вычислений - правильность составленных алгоритма и программы расчета средней зарплаты.
В качестве второго примера рассмотрим решение типичной задачи подсчета суммарной стоимости товаров с выделением товаров наибольшей стоимости. Допустим, что исходные данные представлены следующей таблицей:
яблоки | ||
бананы | ||
арбузы |
Приведем постановку задачи и описание способа ее решения.
Постановка задачиСпособ решения
Определение суммарной
и максимальной стоимости товаров.
Дано:
(D1, ..., DN) - данные о товарах,
где D = [Tov, C, M] - состав данных, s0 = 0
Tov - товар, С - цена товара, от k = 1 до N цикл
М - количество товара, sk = sk-1 + Сk∙Мk
Треб: если k = 1 то
Sum - суммарная стоимость товаров, mах1 = С11∙М11
TovMax - товар максимальной инеc Сk ∙ Мk > mахk-1 то
стоимости.
Где: mахk = Сk ∙ Мk
Sum = C1 ∙ M1 + С2 ∙ М2 + ... + СN ∙ МN, все
TovMax: C×M = Мах(С1 ∙ М1, ... ,СN ∙ МN). кцикл
При: N > 0.
Прежде чем приступить к составлению алгоритмов и программ, убедимся в правильности выбранного способа решения. Для этого проверим результаты на первых шагах, в середине и в конце вычислений. На первом шаге при k = 1 результат
s1 = s0 + С1 ∙ М1 = С1 ∙ M1,
max1 = С1 ∙ М1.
На втором шаге вычислений будут получены следующие значения:
s2 = s1 + С2 ∙ М2 = C1 ∙ M1 + С2 ∙ М2,
max2 = С2 ∙ М2, при С2 ∙ М2 > max1 = Мах(mах1, С2 ∙ М2),
max1, при С2 ∙ М2 £ max1 = Мах(mах1, С2 ∙ М2).
На третьем и последующих шагах в общем случае будут получаться результаты:
sk = sk-1 + Ck ∙ Mk = C1 ∙ M1 + … + Ck ∙ Mk,
maxk = Max(maxk-1, Сk ∙ Мk) = Мах(С1 ∙ М1, ..., Сk ∙ Мk).
Для доказательства этих утверждений необходимо предположить, что они выполняются для случая k-1:
sk-1 =C1 ∙ M1 +...+ Ck-1 ∙ Mk-1,
maxk-1 = Max (C1 ∙ M1, …,Ck-1 ∙ Mk-1),
и подставить эти выражения в соотношения для sk и mахk:
sk = sk-1 + Ck ∙ Mk = C1 ∙ M1 + … Ck-1 ∙ Mk-1 + Ck ∙ Mk,
maxk = Max(maxk-1, Сk ∙ Мk) = Мах(С1 ∙ М1, ..., Сk ∙ Мk).
В силу математической индукции эти утверждения верны для всех k = 1, 2, ..., N. Поэтому на последнем шаге вычислений при k = N будут получены окончательные результаты:
sN = sN-1 + CN ∙ MN = C1 ∙ M1 + … + CN ∙ MN,
maxN = Max(maxN-1, СN ∙ МN) = Max(C1 ∙ M1, ... , СN ∙ МN).
Что и требовалось в постановке задачи. Следовательно, выбранный способ решения поставленной задачи правилен и на его основе можно приступать к составлению соответствующих алгоритма и программы.
Для систематичности разработки примем следующий сценарий диалога и представление исходных данных в операторахdata.
СценарийПредставление данных
список товаров
товар цена кол-во
<тов1> <с1> <т1> * dan: 'сведения о товарах
… .... ... data яблоки, 8000, 3
сумма = <Sum> data бананы, 4000, 2
Максимум data арбузы, 1000, 20
<товар> <стоим> data «», 0, 0
Приведем алгоритм и программу решения поставленной задачи в соответствии с выбранным сценарием и представлением данных.
Алгоритм Программа
алг «сумма и максимум» ' сумма и максимум
нач сls
вывод («список товаров») ? «список товаров»
вывод («товар цена кол-во») ? «товар цена кол-во»
s := 0; k = 0 s = 0: k = 0
цикл do
чтение (тов, с, т) read tv$, с, m
при тов = «» выход if tv$ = «» then exit do
k := k + 1 k = k + 1
вывод (тов, с, т) ? fv$; с; m
s :=s + c∙m s= s + c∙m
если k = 1 то if k = 1 then
max := c∙m max = c∙m
ToвMax := тов ТМ$ = tv$
инес c∙m > max то elseif c(m > max then
max := c∙m max = c∙m
ToвMax := тов TM = tv$
кесли end if
кцикл loop
вывод («cyммa=»,s) ? «cyммa=»,s
вывод («Максимум») ? «Максимум»
вывод (ToвMax, max) ? TM$, max
кон end
Сравнение результатов выполнения представленных алгоритма и программы с описанием выбранного способа решения показывает их полное соответствие друг другу.
АлгоритмРезультаты выполнения
алг «сумма и максимум»