134
Постановка задачи
Сценарий
Сортировка товаров по остатку.
Дано:
товары:
D = (d1, d2, .... d
N
)
- данные товара,
<товар1> <s1> < m 1> *
d = (товар, s, m),
...... ... ...
s
- стоимость, m - кол-во,
остатки:
R = (r1, r2, ..., r
N
)
- данные об остатках,
<товap1> <c1> < р1> *
г = (товар, с, р),
...... ... ...
с - цена, р - остаток.
Треб.: S - сумма выручки,
выручка = <S>
R' = (r1', ..., r
N
') - упорядоченные данные,
сортировка:
Где:
<товар1'> <с1'> <р1'> *
S = (c1-s1)
(m1-p1) +...+ (с
N
-s
N
)
(m
N
-р
N
),
............
р1'
р2'
...
р
N
',
р
k
'
= р
i
для k = 1 ... N и i = 1 ... N.
При: N > 0.
Для представления исходных данных в программе примем операторы data:
tovs: 'товары:
osts: 'остатки:
data «яблоки», 500, 200
data «яблоки», 2500, 100
data «огурцы», 400, 250
data «огурцы», 2000, 150
data «арбузы», 200, 600
data «арбузы», 1200, 200
data «персик», 800, 100
data «персик», 2000, 0
data «», 0, 0
data «», 0, 0
Приведем теперь алгоритм и программу решения поставленной задачи в соответствии с выбранным
сценарием и рассмотренным выше способом упорядочения массивов методом «пузырька».
При составлении алгоритмов и программы решения этой задачи будем использовать принцип
нисходящей разработки «сверху-вниз»: от основного алгоритма и основной части программы к
алгоритмам и подпрограммам решения вспомогательных подзадач.
При решении сложных задач существенным становится организация и представление данных:
подбор массивов и переменных для размещения и обработки данных в памяти ЭВМ, а при выделении
подпрограмм - процедуры доступа к этим данным.
Для размещения исходных данных о товарах в поставленной задаче примем пять массивов: tv(l:N),
s(l:N), m(l:N), с (1:N), p(l:N). Общий размер этих массивов ограничим числом N = 200, которое явно
выделено в описании массивов с тем, чтобы в дальнейшем его можно было увеличить для большего
количества данных без других изменений программы.
алг «выручка и остатки товаров»
'выручка и остатки товаров
N = 100
N = 100
массив tv[1:N],s[1:N],m[1:N]
dim tv$(N),s(N),m(N)
массив L[1:N],c[1:N],p[1:N]
dim L(N),c(N),p(N)
нач
сls
вывод («товары:»)
? «товары:»
данные-товаров
gosub tovar 'товары
вывод («остатки:»)
? «остатки:»
данные-остатков
gosub ostatok 'остатки
вывод («-----»)
? «-----»
подсчет-выручки
gosub vyruch 'выручка
вывод («выручка=», S)
? «выручка=»;S
вывод («сортировка:»)
? «сортировка:»
сортировка-товаров
gosub sortdan 'сортировка
|