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

ФИО *) 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

Глеб Черняк

Читать ответы

Олег Николаевич

Читать ответы

Alexander

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