![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() В условии дан раздел type. это список преподавателей (ФИО, специальность, номера групп, в которых они ведут). Надо написать логическую функцию, которая определяет, есть ли преподаватели, ведущие занятия только в одной группе. если есть, вывести их ФИО.
Я вот написала, но после ввода информации о преподавателях программа закрывается. Помогите, пожалуйста! Код:
program Prepodavatel; {$APPTYPE CONSOLE} uses SysUtils; const kol_prepod=2; type Tgruppa=1..7; Tgruppy_kursa=array[Tgruppa] of boolean; Tgruppy_fak=array[1..5] of Tgruppy_kursa; Tprepod=record fio:string; spec:(matematika,mehanika); spisok_grupp:Tgruppy_fak end; Tvse_prepod=array[1..kol_prepod] of Tprepod; var prepod:Tvse_prepod; i:byte; nomer,danet:0..1; gruppa:Tgruppa; kurs:1..5; t,b:boolean; //---------------------------------------------------------------------- function proverka(n:integer):boolean; var sk:byte; gr:Tgruppa; k:1..5; begin sk:=0; for gr:=1 to 7 do for k:=1 to 5 do if prepod[n].spisok_grupp[gr,k]=true then sk:=sk+1; if sk=1 then result:=true else result:=false end; //--------------------------------------------------------------------- begin //ввод данных о преподавателях for i:=1 to kol_prepod do begin writeln('vveite informaciyu o ',i,' prepodavatele:'); write('FIO: '); readln(prepod[i].fio); write('nomer specialnosti (matematica-0, mehanika-1): '); readln(nomer); if nomer=0 then prepod[i].spec:=matematika else prepod[i].spec:=mehanika; for gruppa:=1 to 7 do for kurs:=1 to 5 do prepod[i].spisok_grupp[gruppa,kurs]:=false; b:=true; while b<>false do begin write('vvedite gruppu: '); readln(gruppa); write('vvedite kurs: '); readln(kurs); prepod[i].spisok_grupp[gruppa,kurs]:=true; write('dobavit eshe gruppu? da-vvedite 1, net-0: '); readln(danet); if danet=1 then b:=true else b:=false end; writeln end; t:=false; for i:=1 to kol_prepod do if proverka(i)=true then begin writeln(prepod[i].fio); t:=true end; readln; if t=false then writeln('takih prepodavateley net'); readln end. lmikle: Пользуемся тегами!!! |
#2
|
||||
|
||||
![]() Теги где?
Действительно...Проверил в BD7. В конце РеадЛН не срабатывает... И слип не помогает... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
![]() Дело не в этом. В процессе выполнения кода вылезает ошибка - Выход за границы массива. Зайди в свойства компилятора и поставь проверку
( Project -> Options -> Compiler -> Range Checking ) после чего отлаживай код. Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#4
|
||||
|
||||
![]() У вас изначально 5 факультетов и 7 групп в каждом, т.е. массив [1..5,1..7]
а обращаетесь вы наоборот: Код:
if prepod[n].spisok_grupp[gr,k] Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
![]() Страдалецъ, спасибо большое! вроде до этого делала наоборот, но не получалось(( Видимо, что-то где-то перепутала.. теперь все работает
![]() |