1. Введите в типизированный файл учебную нагрузку на 8 преподавателей (ФИО, количество недель, нагрузка). С помощью Random выработайте количество недель из диапазона 1..16, среднее количество часов занятий в неделю из диапазона 1..30 и общее количество часов (нагрузка). ФИО обозначьте одной буквой.
Program KEA17;
Type SchoolJob=Record
FIO: String[3];
Kolned:Integer;
Srznach:Byte;
Nagruzka:Byte;
End;
Var FP1:File of SchoolJob;
PP1:SchoolJob;
I:Byte;
Begin
Randomize;
Assign (FP1, 'D:/KEA.017');
ReWrite (FP1);
For I:=1 To 8 Do Begin
ReadLn(PP1.FIO);
PP1.Kolned:=Random(16)+1;
PP1.Srznach:=Random(30)+1;
PP1.Nagruzka:=PP1.Kolned*PP1.Srznach;
End;
Close(FP1);
End.
Program KEA17;
Type SchoolJob=Record
FIO: String[3];
Kolned:Integer;
Srznach:Byte;
Nagruzka:Byte;
End;
Var FP2:File of SchoolJob;
PP2:SchoolJob;
I:Byte;
Begin
Randomize;
Assign (FP2, 'D:/KEA.017');
Reset (FP2);
WriteLn ('FIO Kolned Srznach Nagruzka');
For I:=1 To 8 Do Begin
Read(FP2,PP2);
WriteLn(PP2.FIO,PP2.Kolned,PP2.Srznach,PP2.Nagruzka);
PP2.Kolned:=Random(16)+1;
PP2.Srznach:=Random(30)+1;
PP2.Nagruzka:=PP2.Kolned*PP2.Srznach;
End;
ReadLn;
Close(FP2);
End.
Program KEA17_2;
Type
SchoolJob = Record
FIO: String[3];
Kolned:Integer;
Srznach:Byte;
Nagruzka:Byte;
End;
Var
FP2 : File of SchoolJob;
PP2 : SchoolJob;
maxNagruzka : byte;
savedFIO : string[3];
Begin
maxNagruzka := 0;
Assign (FP2, 'D:/KEA.017'); Reset (FP2);
WriteLn ('FIO Kolned Srznach Nagruzka');
while not eof(FP2) do
begin
Read(FP2, pp2);
writeln(PP2.FIO:3, PP2.Kolned:7,PP2.Srznach:8,PP2.Nagruzka:9);
if pp2.nagruzka > maxNagruzka then
begin
maxNagruzka := pp2.nagruzka;
savedFIO := pp2.FIO;
end;
end;
writeln;
writeln('Самая большая нагрузка - у ', savedFIO);
ReadLn;
Close(FP2);
End.
Здравствуйте, я все понимаю, но вот почему первая программа записывает файл, но он пустой?!Что там нужно изменить???
Здравствуйте, я все понимаю, но вот почему первая программа записывает файл, но он пустой?!Что там нужно изменить???
For I:=1 To 8 Do Begin
ReadLn(PP1.FIO);
PP1.Kolned:=Random(16)+1;
PP1.Srznach:=Random(30)+1;
PP1.Nagruzka:=PP1.Kolned*PP1.Srznach;
Write(FP1, PP1); { <--- Нужно добавить вот эту строку }
End;
Спасибо, вот я тупая!!! У меня еще вот со второй никак не выходит. Вместо фамилии со всей необходимой нагрузкой выходит строка: Самая большая нагрузка - у и все. Что там нужно поменять??? А то у меня уже мозг взрывается после работы!
Все работает, проверил только что специально...
Кстати, возможно - причина в этом. Я заменил тип поля Nagruzka с Byte на Word, потому что при тех значениях, которые заносятся в Kolned и Srznach - очень легко может произойти переполнение: если перемножить максимально возможные значения (16*30), то в Byte это значение уже не помещается.
Так что измени везде (и в описании поля Nagruzka в обеих программах, и в описании maxNagruzka байт на слово, заново создай файл первой программой и прогони вторую программу)...
Огромнейшее спасибо, все получилось!!!