|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 (permalink) |
WrighT
Регистрация: 21.11.2006
Сообщений: 1,881
Записей в дневнике: 1
Сказал(а) спасибо: 4
Поблагодарили 8 раз(а) в 2 сообщениях
Репутация: 1570
|
![]() ![]() Разработать программу для печати письма студентам, имеющим более трех задолженностей, с предупреждением об отчислении. если "хвосты" не будут сданы до срока X (рекомендуется указать предметы и циклы , по которым имеются задолженности). вот что смог по памяти набросать, на самое главное можно сказать не смог сделать ![]() Код:
program lab7; type stud=record Familiya: string [13]; um9: string [12]; Ot4estvo: string [12]; Pol : string [1]; DataRojd: string [11]; gruppa : string [5]; Matemat : integer; fizika: integer; istoriya : integer; informatika : integer; end; var studfile:file of stud; recstud: stud; i,rej,y:integer; procedure org; begin assign (studfile, 'c:/USP.DAT'); rewrite (studfile); with recstud do while true do begin if y=2 then begin close (studfile); exit; end; writeln ('vvedite familiio'); readln (familiya); writeln ('vvedite im9'); readln (um9); writeln ('vvedite ot4estvo'); readln (ot4estvo); writeln ('vvedite pol'); readln (pol); writeln ('vvedite daty rojdenia'); readln (DataRojd); writeln ('vvedite gryppy'); readln (gruppa); for i:=1 to 3 do begin writeln ('matematika'); readln (Matemat); end; for i:=1 to 3 do begin writeln ('fizika'); readln (fizika); end; for i:=1 to 3 do begin writeln ('istoriya'); readln (istoriya); end; for i:=1 to 3 do begin writeln ('informatika'); readln (informatika); end; writeln ('prodoljit vvod? 1-da , 2- net'); readln (y); write (studfile,recstud); end; end; {org} procedure obr; begin {obr} assign (studfile, 'c:/USP.DAT'); reset (studfile); with recstud do while not eof(studfile) do begin read (studfile, recstud); { (matemat,fizika,istoriya,informatika); if matemat+fizika+istoriya+informatika<9 then} writeln ('|',familiya: 1,'|',um9:4,'|',ot4estvo:12,'|', pol: 2,'|', Datarojd:11,'|',gruppa: 5,'|'); end; close (studfile); end; {obr} procedure korr; begin {korr} assign (studfile,'c:/USP.DAT'); reset (studfile); seek (studfile, filesize(studfile)); with recstud do while true do begin if y=2 then begin close (studfile); exit; end; writeln ('vvedite familiio'); readln (familiya); writeln ('vvedite im9'); readln (um9); writeln ('vvedite ot4estvo'); readln (ot4estvo); writeln ('vvedite pol'); readln (pol); writeln ('vvedite daty rojdenia'); readln (DataRojd); writeln ('vvedite gryppy'); readln (gruppa); for i:=1 to 3 do begin writeln ('matematika'); readln (Matemat); end; for i:=1 to 3 do begin writeln ('fizika'); readln (fizika); end; for i:=1 to 3 do begin writeln ('istoriya'); readln (istoriya); end; for i:=1 to 3 do begin writeln ('informatika'); readln (informatika); end; writeln ('prodoljit vvod? 1-da , 2- net'); readln (y); write (studfile, recstud); end; end; {korr} begin {prog} while true do begin writeln ('rejimbl'); writeln ('1: co3danie faila'); writeln ('2: pokazat ot4isl9emblx'); writeln ('3: do6avit studentov'); writeln ('4: Bblxod'); readln (rej); case rej of 1: org; 2: obr; 3: korr; 4: halt; else writeln ('error povtorite vvod'); end; end; end. |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Мой вам совет - прочитайте содержимое этих тем Не работает включение ссылки из письма Массив записей.(Информация по студентам) |
![]() |
#3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
Темыч, а к какому сроку это надо? Если сегодня, то вряд ли успею, а вот на выходных могу поковыряться. Впрочем, может быть кто-нибудь еще успеет раньше меня.
Сходу одно замечание. Я бы вместо бесконечного цикла с прерыванием Код:
while true do begin if y=2 then begin close (studfile); exit; end; ................. writeln ('prodoljit vvod? 1-da , 2- net'); readln (y); ................. end; Код:
Repeat ................. writeln ('prodoljit vvod? 1-da , 2- net'); readln (y); ................. Until y=2; close (studfile); |
![]() |
![]() |
![]() |
#4 (permalink) |
WrighT
Регистрация: 21.11.2006
Сообщений: 1,881
Записей в дневнике: 1
Сказал(а) спасибо: 4
Поблагодарили 8 раз(а) в 2 сообщениях
Репутация: 1570
|
![]()
Да я даже не знаю, вроде бы сегодня надо желательно
![]() еще момент, знаю что в этой процедуре точно бред я написал: Код:
procedure obr; begin {obr} assign (studfile, 'c:/USP.DAT'); reset (studfile); with recstud do while not eof(studfile) do begin read (studfile, recstud); { (matemat,fizika,istoriya,informatika); if matemat+fizika+istoriya+informatika<9 then} writeln ('|',familiya: 1,'|',um9:4,'|',ot4estvo:12,'|', pol: 2,'|', Datarojd:11,'|',gruppa: 5,'|'); end; close (studfile); end; {obr} ![]() |
![]() |
![]() |
![]() |
#5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
И еще вопрос - а что такое в данном случае "цикл"?
|
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
#6 (permalink) |
WrighT
Регистрация: 21.11.2006
Сообщений: 1,881
Записей в дневнике: 1
Сказал(а) спасибо: 4
Поблагодарили 8 раз(а) в 2 сообщениях
Репутация: 1570
|
![]()
Не знаю если честно, наверно 3 оценки, как то записываются 3мя циклами.
А потом наверно еще и предлагается указать в каком цикле плохая оценка(но я думаю это необязательно даже делать) |
![]() |
![]() |
![]() |
#9 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
Так, ну вот что у меня получилось. Я руководствовался сформулированным заданием, а, поскольку там никакие корректировки, упорядочения списка и прочее не значатся, так я это и выбросил. Если это всё-таки нужно, можно ввести такие процедуры.
Код:
program lab7; const Nstud_max=100; type stud=record Familiya: string; um9: string; Ot4estvo: string; Pol : Char; DataRojd: string; gruppa : string; Matemat : Array[1..3] of byte; fizika: Array[1..3] of byte; istoriya : Array[1..3] of byte; informatika : Array[1..3] of byte; end; var studfile:Text; recstud: Array[1..Nstud_max] of stud; BadStud:Array[1..Nstud_max] of Word; i,j,y,Nstud,Nbadstud:integer; procedure org; Var i:Integer; begin Append(studfile); Repeat Inc(Nstud); with recstud[Nstud] do begin Writeln('Student N ',Nstud:3,':'); writeln ('vvedite familiio (max 10 letters)'); readln (familiya); writeln ('vvedite im9 (max 10 letters)'); readln (um9); writeln ('vvedite ot4estvo (max 10 letters)'); readln (ot4estvo); writeln ('vvedite pol (M/J)'); readln (pol); writeln ('vvedite daty rojdenia'); readln (DataRojd); writeln ('vvedite gryppy (max 4 letters)'); readln (gruppa); for i:=1 to 3 do begin writeln ('matematika, cycl ',i); readln (Matemat[i]); end; for i:=1 to 3 do begin writeln ('fizika, cycl ',i); readln (fizika[i]); end; for i:=1 to 3 do begin writeln ('istoriya, cycl ',i); readln (istoriya[i]); end; for i:=1 to 3 do begin writeln ('informatika, cycl ',i); readln (informatika[i]); end; write (studfile,familiya); for i:=Length(familiya)+1 to 11 do Write(studfile,' '); write (studfile,'|'+um9); for i:=Length(um9)+1 to 11 do Write(studfile,' '); write (studfile,'|'+ot4estvo); for i:=Length(ot4estvo)+1 to 11 do Write(studfile,' '); write (studfile,'|',pol,'|',DataRojd); for i:=Length(DataRojd)+1 to 10 do Write(studfile,' '); write (studfile,'|'+gruppa); for i:=Length(gruppa)+1 to 4 do Write(studfile,' '); Write(studfile,'|'); for i:=1 to 2 do write(studfile,Matemat[i],' '); write(studfile,Matemat[3],'|'); for i:=1 to 2 do write(studfile,fizika[i],' '); write(studfile,fizika[3],'|'); for i:=1 to 2 do write(studfile,istoriya[i],' '); write(studfile,istoriya[3],'|'); for i:=1 to 3 do write(studfile,informatika[i],' '); end; WriteLn(studfile); write('prodoljit vvod? 1-da , 2- net '); readln(y); Until y=2; end; {org} begin {prog} Nstud:=0; assign (studfile, 'C:/USP.DAT'); rewrite (studfile); writeln (studfile, ' familiya um9 ot4estvo p Datarojd grup. Matem fiz. ist. inf.'); Writeln(studfile); org; Close(studfile); assign (studfile, 'C:/NEW.DAT'); rewrite (studfile); Nbadstud:=0; For i:=1 to Nstud do begin with recstud[i] do begin y:=0; for j:=1 to 3 do if (Matemat[j]=2) or (fizika[j]=2) or (istoriya[j]=2) or (informatika[j]=2) then y:=1; end; If y=1 then begin INC(Nbadstud); BadStud[Nbadstud]:=i; end; end; For i:=1 to NbadStud do with recstud[BadStud[i]] do begin If pol='M' then Write(studfile, 'Dorogoy student ') else Write(studfile, 'Dorogaya studentka '); WriteLn(studfile, 'gruppy '+gruppa+' '+Familiya+' '+um9+' '+Ot4estvo+'!'); WriteLn(studfile,'Soobshchaem Vam, chto u Vas imejutsa zadoljennosti po sledujushchim'); WriteLn(Studfile,'discyplinam i cyclam:'); for j:=1 to 3 do if Matemat[j]=2 then Writeln(studfile,'Matematika, cycl N',j); for j:=1 to 3 do if fizika[j]=2 then Writeln(studfile,'Fizika, cycl N',j); for j:=1 to 3 do if istoriya[j]=2 then Writeln(studfile,'Istoria, cycl N',j); for j:=1 to 3 do if informatika[j]=2 then Writeln(studfile,'Informatika, cycl N',j); Writeln(studfile,'V sluchae, esli Vy ne perezdadite ukazannyje predmety'); Writeln(studfile,'v techenije 10 dney, Vy budete OTCHISLENY.'); Writeln(studfile); end; Close(studfile); end. |
![]() |
![]() |
![]() |
#10 (permalink) |
WrighT
Регистрация: 21.11.2006
Сообщений: 1,881
Записей в дневнике: 1
Сказал(а) спасибо: 4
Поблагодарили 8 раз(а) в 2 сообщениях
Репутация: 1570
|
![]()
чет выдает ошибку
![]() .................... var studfile:Text; recstud: Array[1..Nstud_max] of stud; BadStud:Array[1..Nstud_max] of Word; i,j,y,Nstud,Nbadstud:integer; ........................перед красной ставит курсор и пишет: Error 22: Structure too large. |
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|