Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УПП Программирование 2102,2202.doc
Скачиваний:
41
Добавлен:
20.04.2015
Размер:
760 Кб
Скачать

Im: string[4];

zar, nalog, vid: real;

end;

var vir: file of vr; {объявление файла Выработки}

ved: file of vd; {объявление файла Ведомости}

v: array[1..n] of vr; {массив V для ввода}

r: array[1..n] of vd; {массив R для расчета}

I: integer;

begin

clrscr;

{связывание логического и физического файлов}

assign(vir,'vir'); assign(ved,'ved');

rewrite(vir); {открытие файла Vir для записи}

writeln('введите!');

writeln('табель, имя, тариф, дни');

for i:=1 to n do begin

readln(v[i].tab); readln(v[i].im);

readln(v[i].tarif); readln(v[i].dn);

writeln(v[i].tab:2, v[i].im:6, v[i].tarif:3:0, v[i].dn:4:0);

write(vir,v[i]); {занесение в файл Vir очередной записи}

end;

reset(vir); {открытие файла Vir для чтения}

rewrite(ved); {открытие файла Ved для записи}

for i:=1 to n do begin {вычисления}

read(vir,v[i]); {чтение записи из файла Vir}

r[i].im:=v[i].im; r[i].zar:=v[i].tarif*v[i].dn;

r[i].nalog:=0.13*r[i].zar; r[i].vid:=r[i].zar-r[i].nalog;

write(ved,r[i]); {занесение записи в файл Ved}

end;

reset(ved); {открытие файла Ved для чтения}

for i:=1 to n do begin {печать}

read(ved,r[i]); {чтение записи из файла Ved}

writeln(r[i].im:4, r[i].zar:5:0, r[i].nalog:7:2, r[i].vid:8:2);

end;

close(ved);close(vir); {закрытие файлов}

end.

PROGRAM Vivod; {---------вывод данных по запросу-----------}

uses crt; {к примеру 9-2}

const n=3;

label m;

type

vd=record {объявление записи для Ведомости}

Im: string[4];

zar, nalog, vid: real;

end;

var ved: file of vd; {объявление файла Ведомости}

r: array[1..n] of vd; {массив R для вывода}

xz,xn,xv:real; {итоги: зарплата, налог, выдать}

I: integer;

x:string[4]; {искомое имя}

begin

clrscr;

assign(ved,'ved.txt');

write('показать всех (0) или одного (имя)? '); readln(x);

writeln(' имя зарплата налог выдать');

reset(ved); {открытие файла Ved для чтения}

if x='0' then begin {вывод всех работников}

for i:=1 to n do begin

read(ved,r[i]); {чтение записи из Ved}

writeln(r[i].im:4, r[i].zar:9:0, r[i].nalog:7:2, r[i].vid:8:2);

{подсчет итогов}

xz:=xz+r[i].zar; xn:=xn+r[i].nalog; xv:=xv+r[i].vid;

end;

writeln('Итог',xz:9:0,xn:7:2,xv:8:2) {вывод итогов}

end;

if x<>'0' then begin {поиск и вывод одного имени}

for i:=1 to n do begin

read(ved,r[i]);

if x=r[i].im then begin {если найдено - вывод и конец}

writeln(r[i].im:4,r[i].zar:9:0, r[i].nalog:7:2, r[i].vid:8:2);

goto m {выход из цикла поиска}

end;

end;

writeln('Не найдено имя: ',x);

m:end;

close(ved)

end.

Пример 9-3. Положим, в течение месяца работники бригады выполняли различные виды работ (пусть три), сведения о которых хранятся в трех файлах с именами Rab1, Rab2, Rab3. Кроме того, имеется справочный файл тарифов работников Tarif.

Последовательность действий:

1. Предварительно создать на диске и заполнить файлы с именами Rab1, Rab2, Rab3 и Tarif.

2. Последовательно считать все три файла в массив Mr[1..15].

3. Отсортировать массив по табельному номеру (по полю mr.tb). Повторяю­щиеся номера объединить (часы суммиру­ются) в одну строку.

4. Считать файл Tarif в массив Mt[1..6]. Исходя из индивидуальных тарифов, рассчитать зарплату, налог и сумму к выдаче каждого и записать это в файл Ved.

5. Вывести из Ved полученные данные на экран вместе с общей суммой зарплат бригады.

файл

файл

файл

файл

файл

Tarif

Rab1

Rab2

Rab3

Ved

tb

im

tr

tb

ch

tb

ch

tb

ch

tb

im

ch

zr

nl

vd

таб №

имя

тариф

таб №

часы

таб №

часы

таб №

часы

таб №

имя

часы

заработок

налог

выдать

35

Иван

50

8

30

15

40

35

50

8

Лена

120

3000

390,0

2610,0

48

Петр

30

20

50

48

20

8

40

15

Олег

50

1000

130,0

870,0

8

Лена

25

15

10

35

10

20

Вася

50

1750

227,5

1522,5

20

Вася

35

8

50

35

Иван

60

3000

390,0

2610,0

15

Олег

20

48

Петр

20

600

78,0

522,0

всего

300

9350

1215,5

8134,5

мас

сивM

T

м

ассив

MR

tb

im

tr

tb

ch

Необходимо создать файл Ved ведомости на оплату, где будут собраны сведения обо всех работниках и сделаны необходимые вычис­ления.

Исходные данные и результаты показаны ниже. Над колонками приведены названия полей, принимающих соответствующие данные.

Программа Vedom реализует процесс обработки данных. Прог­рамму занесения данных в фалы Rab1, Rab2, Rab3, Tarif напишите сами.

PROGRAM VEDOM; {программа к примеру 9-3}

uses crt;

type {создание типов записей}

rab=record {тип записи Работы}

tb,ch:integer

end;

tar=record {тип записи Тарифы}

tb,tr:integer;