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. Выдает ошибку в Паскале, а в Идеоне верно.Почему?
1 — найти ошибку в тексте визуально и так бывает весьма не просто, а в не форматированном не возможно в принципе
постарайтесь опубликовать текст в читаемом виде, на пример тут http://dumpz.org/
2 — все компиляторы сообщают строку и позицию ошибки. подавляющее большинство компиляторов, в том числе и Turbo Pascal и Delphi, выдают вполне внятное сообщение об ошибке
сообщите полный текст ошибки
Добрый день. Меня заинтересовал ваш ответ "1 — найти ошибку в тексте визуально и так бывает весьма не просто, а в не форматированном не возможн..." на вопрос http://www.liveexpert.org/topic/view/1063101-program-faculty-const-maxnum-30-maksimalnoe-kolichestvo-prepodavatelej-type-tlecturer-record-prepodavatel-name-string. Можно с вами обсудить этот ответ?
еще полный текст сообщения(й) ошибки(ах) компилятора
Добрый день. Меня заинтересовал ваш ответ "еще полный текст сообщения(й) ошибки(ах) компилятора" на вопрос http://www.liveexpert.org/topic/view/1063101-program-faculty-const-maxnum-30-maksimalnoe-kolichestvo-prepodavatelej-type-tlecturer-record-prepodavatel-name-string. Можно с вами обсудить этот ответ?
все просто — выбранный Вами компилятор Pascal, не поддерживает ключевое слово in (вероятно перебор «ВСЕХ ЭЛЕМЕНТОВ В», то что в других языках foreach)
в классическом паскале этого ни когда не было
придется перебирать по номерам — от 0 до длина-1
Добрый день. Меня заинтересовал ваш ответ "все просто — выбранный Вами компилятор Pascal, не поддерживает ключевое слово in (вероятно перебор ..." на вопрос http://www.liveexpert.org/topic/view/1063101-program-faculty-const-maxnum-30-maksimalnoe-kolichestvo-prepodavatelej-type-tlecturer-record-prepodavatel-name-string. Можно с вами обсудить этот ответ?