ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Пример решения задач с модульным подходом.Рабочие изготавливают различные изделия. Требуется рассчитать зарплату каждого рабочего, если в каждой заявке на выполнение работы он указывает собственный табельный номер, код изготовленных изделий, количество изготовленных изделий и код качества выполненной работы. Если код качества равен 001, устанавливается надбавка в 50%, а с кодом 002- надбавка 25%. Имеется таблица соответствующих кодов изделий и их стоимостей (таблица расценок). Контрольный пример: Исходные данные: Таблица заявок Табельный код количество код номер рабочего изделия изделий качества 777 005 10 1 101 005 5 3 777 004 5 1 111 003 15 2 101 003 10 3 Таблица расценок Код изделия стоимость 001 7,5 003 10 004 15 005 10
Результат: Ведомость по зарплате Табельный номер зарплата 777 262,5 101 150 111 187,5
В самом общем виде алгоритм решения задачи можно описать следующим образом: 1)Подсчитать стоимость каждой заявки. 2)Суммировть стоимости заявок по одинаковым табельным номерам. Структурноданные задачи представляют собой таблицы, где таблица- это совокупность массивов одинаковой длины, соответствующие элементы которой описывают некоторый объект. В данной задаче присутствуют две исходных таблицы (таблица заявок из четырех массивов и таблица расценок из двух массивов) и одна выходная таблица из двух массивов (ведомость по зарплате).
Описание исходных и выходных данных:
Исходные данные.
n- количество заявок TABN(n)- табельные номера KODI(n)- код изделия KOLI(n)- количество изделий KODk(n)- код качества работы m-количество изделий в таблице расценок KODIz(m)- код изделия STI(m)- стоимость изделия
Выходные данные.
K- количество рабочих в ведомости по зарплате TABNZ(k)-табличный номер рабочего в ведомости Zarp(k)- зарплата рабочего
Программа на языке Бейсик REM ведомость по зарплате REM ввод исходных данных INPUT "введите количество заявок и расценок";n,m DIM TABN(n), KOD I(n), KOLI(n), KODK(n), STZ(n) REM STZ(n) – промежуточный массив, стоимость заявки DIM KODIZ(m), STI(m), TABNZ(n), ZARP(n) FOR i=1 to n PRINT "введите";i; "-ю заявку" INPUT TABN(i), KOD I(i), KOL I(i), KOD K(i) Next i FOR i=1 to m PRINT "введите";i; "-ю расценку" INPUT KODIZ(i), STI(i) Next i REM Часть 1. Вычисление стоимости заявки FOR i=1 to n REM Поиск изделий в таблице расценок, p-признак поиска p=0 FOR j=1 to m IF KOD I(i)= KOD I Z(j) THEN p=j NEXT j IF p>0 THEN REM вычисление стоимости заявки ST Z(i)=ST I(p)*KOL I(i) IF KOD K(i)=1 THEN ST Z(i)=0.5*ST Z(i) IF KOD K(i)=2 THEN ST Z(i)=0.25*ST Z(i) ELSE PRINT «нет изделия с кодом»;KOD I(i) STOP END IF NEXT i REM Часть2. Подсчёт зарплаты Рассмотрим подробнее алгоритм формирования ведомости по зарплате. 1) Табельный номер из заявок мы ищем в массиве табельных номеров из ведомости (даже если точно знаем, что их там ещё нет!) 2) Если мы не находим табельный номер в массиве TABNZ, то мы помещаем его в этот массив, а в соответствующий элемент ZARP помещаем стоимость заявки. 3) Если табельный номер найден в массиве TABNZ, то к соответствующему элементу в массиве ZARP прибавляем стоимость заявки.
REM подсчёт зарплаты K=0 'Количество элементов FOR i=1 to n P=0 'признак поиска - не найден FOR j=1 to k IF TAB NZ(j)=TAB N(i) THEN p=j NEXT j IF p=0 THEN не найден k=k+1 TAB NZ(k)= TAB N(i) ZARP(k)=ST Z(i) ELSE ZARP(p)=ZARP(p)+STZ(i) END IF NEXT i PRINT " Ведомость по зарплате" PRINT "Табельный номер", "Зарплата" FOR i=1 to k PRINT TAB NZ(i), ZARP(i) NEXT i END Не нашли, что искали? Воспользуйтесь поиском:
|