Здравствуйте! Можете подсказать, где ошибка в данной программе и как ее можно исправить.
Задание: Написать программу, в которой описывается массив записей, хранящий следующую информацию: ФИО сотрудника, почасовая оплата, количество часов. Программа должна выполнять следующие действия: ввод данных (изначально информация записывается в поля "ФИО сотрудника" и " почасовая оплата", поле "количество часов" заполняется нулями), запись количества часов заданному сотруднику, расчет и вывод ведомости на зарплату сотрудникам (т.е. выводится таблица с колонками: ФИО сотрудника, почасовая оплата, количество часов, зарплата за месяц).
| Код | program lab7;
uses crt;
const r=20;{число работников}
type TFIO= record{Данные сотрудника} f{Фамилия},i{Имя},o{Отчество}: string[40]; zh: integer; h: integer; p: integer; end;
TZAR= record{Зарплата} fio: TFIO; zh: array [1..r] of integer;{заработок в час} h: array [1..r] of integer;{всего часов} p: array [1..r] of integer;{зарплата} end;
var
Ot4et: array [1..r] of TZAR; n: byte;{Количество записей в отчете} ch: char;{Выбор между действиями} i,j: integer; m: byte;
procedure EnterSotr;{Ввод сотрудников} var i: integer; begin writeln; writeln; n:=0; write('Фамилия [',i,']:'); Readln(Ot4et[n+1].fio.f); while ot4et[n+1].fio.f<>' ' do begin write('Имя [',i,']:'); Readln(ot4et[n].fio.i); write('Отчество [',i,']:'); Readln(ot4et[n].fio.o); write('Заработок в час[',i,']:'); Readln(ot4et[n].fio.zh); end; writeln('Вы ввели:'); writeln(ot4et[n].fio.f,' ',ot4et[n].fio.i,' ',ot4et[n].fio.o); write('Введите фамилию следующего сотрудника или нажмите Enter для завершения вноса сотрудников'); readln(ot4et[n+1].fio.f); end;
procedure PrintSotr;{Вывод информации о сотрудниках}
var i,j,imax,max: integer;
begin clrscr; writeln('Текущий список сотрудников:'); i:=1; imax:=10; repeat if imax>n then max:=n else max:=imax; while i<=max do write(i,' ',ot4et[i].fio.f,' ',ot4et[i].fio.i[1], ' ', ot4et[i].fio.o[1], ' ', ot4et[i].fio.zh,' - '); for j:=1 to r do write(ot4et[i].zh[j]); writeln; i:=i+1;
if max<n then begin writeln; writeln('Нажмите любую клавишу для продолжения списка...'); ch:= ReadKey; imax:= i+20; clrscr; writeln('Текущий список сотрудников (продолжение):'); end; until i>n; end;
procedure FindFools (h:byte); {Процедура поиска в списке сотрудников, где подщитывается их заработок} var i,j,s,n,p,zh: integer; begin writeln('Сотрудники'); p:=0; for i:=1 to r do begin h:=0; for j:=1 to n do s:=s+ot4et[i].fio.zh; writeln('Запрос сотрудника с фамилией'); readln(ot4et[i].fio.f); writeln(ot4et[i].fio.f,' ',ot4et[i].fio.i,' ',ot4et[i].fio.o,' ',ot4et[i].fio.zh); writeln('Введите количетсво отработанных часов сотрудником'); readln(ot4et[i].fio.h); p:=zh*h; end; writeln('Зарплата сотрудника составляет:',p); end;
begin randomize;
writeln('Выберите следующие операции:'); writeln('1 - Ввод информации о сотрудниках'); writeln('2 - Распечатка листа сотрудников');
ch:=ReadKey; if ch='1' then EnterSotr; if ch='2' then PrintSotr;
repeat write('Введите фамилию сотрудника, которого нужно найти'); readln(m); FindFools (m); writeln('Провести поиск еще раз? (д/н)');
ch:=ReadKey; until (ch='Н') or (ch='н') or (ch='n') or (ch='N');
end.
|
|