PROGRAM Faculty; CONST MAXNUM = 30; (* Максимальное количество преподавателей *) TYPE TLecturer = record (* Преподаватель: *) name : string[25]; (*...

ФИО *) position: string[10]; (* Должность *) title: string[10]; (* Звание *) subject: string[15]; (* Предмет *) faculty: string[10]; (* Факультет *) course: string[10]; (* Курс *) hours: Integer; (* Часы *) end; (* Список предметов *) TSubjects = array of string; procedure PrintLecturer(lecturer: TLecturer); (* Напечатать `Преподавателя` как строку таблицы *) begin with lecturer do begin writeln(name:25, ' | ', title: 10, ' | ', position: 10, ' | ', subject:15, ' | ', faculty:10, ' | ', course:10, ' | ', hours:3, ' |'); end end; function RandomChoice(arr: array of string): string; (* Выбрать случайный элемент массива *) begin RandomChoice := arr[random(length(arr))]; end; function GetRandomLecturer(): TLecturer; (* Сгенерировать случайного `Преподавателя` *) const names: array[1..4] of string = ('Ivan', 'Danilo', 'Natalia', 'Irina'); last_names: array[1..4] of string = ('Bortko', 'Galich', 'Litvinenko', 'Belyh'); titles: array[1..3] of string = ('senior', 'middle', 'junior'); positions: array[1..3] of string = ('professor', 'instructor', 'assistant'); faculties: array[1..4] of string = ('PRIMAT', 'HUDLIT', 'ECON', 'ENG'); courses: array[1..3] of string = ('BUDGET', 'CONTRACT', 'REMOTE'); subjects: array[1..4] of string = ('math', 'reading', 'writing', 'painting'); begin with GetRandomLecturer do begin name := RandomChoice(names) + ' ' + RandomChoice(last_names); position := RandomChoice(positions); title := RandomChoice(titles); faculty := RandomChoice(faculties); course := RandomChoice(courses); subject := RandomChoice(subjects); hours := random(100) + 1; end; end; (* Задание 1. Найти преподавателя с заданными должностью и званием, имеющего самую большую нагрузку. *) function MaxLoad(lecturers: array of TLecturer; title: string; position: String): TLecturer; var lecturer: TLecturer; (* Переменная-итератор цикла *) begin MaxLoad := lecturers[0]; for lecturer in lecturers do begin if (lecturer.position = position) and (lecturer.title = title) and (lecturer.hours > MaxLoad.hours) then MaxLoad := lecturer; end; end; (* Задание 2: Список предметов заданного предоватателя *) function LecturerSubjects(lecturers: array of TLecturer; name: string): TSubjects; var lecturer: TLecturer; (* переменная-итератор *) count: Integer; (* счетчик предметов *) begin count := 0; SetLength(LecturerSubjects, length(lecturers)); (* Худший случай: преподаватель читает все предметы *) for lecturer in lecturers do begin if (lecturer.name = name) then begin LecturerSubjects[count] := lecturer.subject; (* сохраним предмет *) count := count + 1; (* посчитаем предмет *) end; end; SetLength(LecturerSubjects, count); (* Уменьшим размер до фактического количества предметов *) end; (* Задание 3: Объем часов на заданном факультете и заданном курсе *) function TotalHours(lecturers: array of TLecturer; faculty: string; course: string): Integer; var lecturer: TLecturer; begin TotalHours := 0; for lecturer in lecturers do if (lecturer.faculty = faculty) and (lecturer.course = course) then TotalHours := TotalHours + lecturer.hours; end; VAR lecturers: array[1..MAXNUM] of TLecturer; i: Integer; subject: string; BEGIN (* Сгенерируем случайные тестовые данные *) for i := 1 to length(lecturers) do begin lecturers[i] := GetRandomLecturer(); PrintLecturer(lecturers[i]); end; writeln; writeln('Максимальная нагрузка для «junior» «professor»:'); PrintLecturer(maxLoad(lecturers, 'junior', 'professor')); writeln; write('«Danilo Balyh» читает предметы: '); for subject in LecturerSubjects(lecturers, 'Danilo Belyh') do write(subject, ', '); writeln; writeln; writeln('Полная нагрузка на «ECON» факультете, курс «BUDGET», часов: ', TotalHours(lecturers, 'ECON', 'BUDGET')); END. Выдает ошибку в Паскале, а в Идеоне верно.Почему?

Дополнение автора от 19.05.14 16:01:55
dumpz.org/1080717/

Дополнение автора от 19.05.14 16:06:50
Program1.pas(64): Встречено 'in', а ожидалось ':'

Дополнение автора от 19.05.14 19:40:54
Спасибо Вам огромное!!! Конечно, все сделаю… только на сегодня у меня лимит исчерпан.
19.05.14
3 ответа

Лучший ответ по мнению автора

1 — найти ошибку в тексте визуально и так бывает весьма не просто, а в не форматированном не возможно в принципе

постарайтесь опубликовать текст в читаемом виде, на пример тут http://dumpz.org/

2 — все компиляторы сообщают строку и позицию ошибки. подавляющее большинство компиляторов, в том числе и Turbo Pascal и Delphi, выдают вполне внятное сообщение об ошибке

сообщите полный текст ошибки
19.05.14
Лучший ответ по мнению автора

Другие ответы

еще полный текст сообщения(й) ошибки(ах) компилятора
19.05.14
все просто — выбранный Вами компилятор  Pascal, не поддерживает ключевое слово in (вероятно перебор «ВСЕХ ЭЛЕМЕНТОВ В», то  что в других языках foreach)

в классическом паскале этого ни когда не было

придется перебирать по номерам — от 0 до длина-1
19.05.14

Глеб Черняк

Сейчас на сайте
Глеб Черняк
Глеб Черняк
Эксперт месяца
Читать ответы

Александр

Сейчас на сайте
Читать ответы

Виталий

Читать ответы
Посмотреть всех экспертов из раздела Технологии
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store