IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите, пожалуйста, найти ошибки!
Catherinektz
сообщение 24.10.2011 10:29
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский
Реальное имя: Екатерина

Репутация: -  1  +


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.



2. Введите все данные из файла в форме таблицы. Программными средствами определите, у какого преподавателя самая большая нагрузка и введите эти данные на экран.
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.


Эти обе задачи взаимосвязаны. Буду очень благодарна, если кто-то поможет.

Сообщение отредактировано: Lapp - 25.10.2011 5:17
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 24.10.2011 10:58
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
2. Введите все данные из файла в форме таблицы. Программными средствами определите, у какого преподавателя самая большая нагрузка и введите эти данные на экран.
Зачем здесь опять что-то пытаться записывать в файл? Из него надо только читать:

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.

Как-то вот так. Набирал прямо здесь, так что проверяй...

Сообщение отредактировано: IUnknown - 24.10.2011 10:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 1.11.2011 20:38
Сообщение #3


Гость






Здравствуйте, я все понимаю, но вот почему первая программа записывает файл, но он пустой?!Что там нужно изменить???
 К началу страницы 
+ Ответить 
Catherinektz
сообщение 1.11.2011 20:42
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский
Реальное имя: Екатерина

Репутация: -  1  +


Здравствуйте, я все понимаю, но вот почему первая программа записывает файл, но он пустой?!Что там нужно изменить???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 1.11.2011 20:55
Сообщение #5


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
первая программа записывает файл, но он пустой?!Что там нужно изменить???
В том то и дело, что она не записывает ничего. Подготавливает структуру для записи в файл, но не записывает ...
    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;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Catherinektz
сообщение 1.11.2011 21:06
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский
Реальное имя: Екатерина

Репутация: -  1  +


Спасибо, вот я тупая!!! blink.gif У меня еще вот со второй никак не выходит. Вместо фамилии со всей необходимой нагрузкой выходит строка: Самая большая нагрузка - у и все. Что там нужно поменять??? А то у меня уже мозг взрывается после работы!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 1.11.2011 21:36
Сообщение #7


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Все работает, проверил только что специально...

Кстати, возможно - причина в этом. Я заменил тип поля Nagruzka с Byte на Word, потому что при тех значениях, которые заносятся в Kolned и Srznach - очень легко может произойти переполнение: если перемножить максимально возможные значения (16*30), то в Byte это значение уже не помещается.

Так что измени везде (и в описании поля Nagruzka в обеих программах, и в описании maxNagruzka байт на слово, заново создай файл первой программой и прогони вторую программу)...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Catherinektz
сообщение 2.11.2011 8:20
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский
Реальное имя: Екатерина

Репутация: -  1  +


Огромнейшее спасибо, все получилось!!! give_rose.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 1:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"