p align="left">begin textcolor(red); writeln('Thi is impossible:'); textcolor(black); writeln('The omount of validly absence more then just omount of absence'); write('Push the -enter- and input theomount of validly absence again'); readln; textcolor(white); gotoxy(25,33); writeln('Input the omount of validly absence'); gotoxy(25,34); //очищение экрана writeln(' '); writeln(' '); writeln(' '); write(' '); gotoxy(25,34); readln(p); //по новой вводим и читаем end; z.opravdan:=p; {-------------------dobavlenie-------------------------} //происходит так же как при организации pop:=verh; //указатель на начало while pop<>nil do//пока не конец списка if z.fio>= pop^.inf.fio//сравнение по фамилиям then pop:=pop^.nr//перевод указателя else break; //прервать цикл new(newE); //для нового элемента newE^.inf.fio:=z.fio; newE^.inf.propusk:=z.propusk; newE^.inf.opravdan:=z.opravdan; newE^.inf.nomergrupp:=z.nomergrupp; newE^.inf.neopravdan:= newE^.inf.propusk- newE^.inf.opravdan; {----------------v konec------------------------------} if pop=nil then begin right^.nr:=newE; newE^.nl:=right; newE^.nr:=nil; right:=newE; kolvo:=kolvo+1; end else {----------------v na4alo------------------------------ if pop=verh then begin pop^.nl:=newE; newE^.nr:=pop; newE^.nl:=nil; kolvo:=kolvo+1; verh:=newE; left:=newE; end else {----------------v seredinu------------------------------} begin pop^.nl^.nr:=newE; newE^.nl:=pop^.nl; pop^.nl:=newE; newE^.nr:=pop; kolvo:=kolvo+1; end; end; {---------------------------------------------------------------------------------} {---------------------------------------UDALENIE----------------------------------} {---------------------------------------------------------------------------------} procedure udal; var i:integer; begin gotoxy(20,25); textcolor(black); writeln('Input the name of a student which could be delete '); textcolor(white); gotoxy(25,27); readln(z.fio); //ввод и чтение имени for i:=1 to (15-length(z.fio)) do//достаиваем фамилию до 15 знаков z.fio:=z.fio+' '; newE:=verh; while newE<>right^.nr do//пока не конец списка begin {------------------------Uslovie esli posledniy---------------------} if newE^.inf.fio=z.fio then begin if newE=right then begin temp:=newE; newE:=newE^.nl; newE^.nr:=nil; right:=newE; dispose(temp); kolvo:=kolvo-1; clrscr; textcolor(green); gotoxy(24,25); writeln('The student has been deleted'); //удалили readln; exit; end else {-----------------Uslovie esli 1-iy el-t udalyayut--------------} if newE =left then begin temp:=newE; newE:=newE^.nr; newE^.nl:=nil; verh:=newE; dispose(temp); kolvo:=kolvo-1; clrscr; textcolor(green); gotoxy(24,25); writeln('The student has been deleted'); //удалили readln; exit; end {-------------------Esli lyuboy no ne 1-iy i ne posledniy-------------} else begin temp:=newE; newE^.nl^.nr:=temp^.nr; newE^.nr^.nl:=newE^.nl; dispose(temp); kolvo:=kolvo-1; clrscr; textcolor(green); gotoxy(24,25); writeln('The student has been deleted'); //удалили readln; exit; end; end; newE:=newE^.nr; //перевод указателя end; gotoxy(15,25); clrscr; textcolor(red); gotoxy(15,25); writeln('This student has not been finded !!!'); //не удалили gotoxy(15,27); writeln('Input his name without mistakes again'); //введите имя снова textcolor(white); readln; exit; end; {------------------------------------------------------------------------------} {-------------------------------P O I S K --------------------------------} {------------------------------------------------------------------------------} {------------------------------------------------------------------------------} //смотреть prosmotr_2 -всё аналогично procedure poisk(x:ukaz;imya:string); var n,i:integer; c:char; begin clrscr; n:=0; i:=0; newE:=verh; while (newE<>right^.nr) do begin//пока не конец списка if newE^.inf.fio=imya then inc(i); // подсчёт людей с таким именем newE:=newE^.nr; end; if i=0 then begin clrscr;gotoxy(27,25); textcolor(red);writeln('This student does not EXIST'); exit; end; //такого нет newE:=x; textcolor(white); textbackground(blue); writeln('|------|---------------|----------|---------|-----------|--------|-------|'); writeln('|#grupp| Name | amount of| validly | unvalidly | summa |percent|'); writeln('| | | | absence | | | |'); writeln('|------|---------------|----------|---------|-----------|--------|-------|'); while (newE<>right^.nr) and (n<=6) do begin inc(n); if newE^.inf.fio=z.fio then textbackground(red) //выделение элемента красным если это тот else textbackground(blue); write('|', newE^.inf.nomergrupp:5,' '); //печать информации по полям write('|',newE^.inf.fio:15); write('|',newE^.inf.propusk:5,' '); write('|', newE^.inf.opravdan:5,' |'); write(newE^.inf.neopravdan:7,' |'); write(newE^.inf.summa:6,' |'); writeln(newE^.inf.procent:5:2,' |'); write('| | | | | | | |'); textbackground(blue); writeln; newE:=newE^.nr; end; if otpech=0 then//изменение установок для печати otpech:=otpech+n; textcolor(white); writeln('|------|---------------|----------|---------|-----------|--------|-------|'); writeln('Push the -enter- to the ExiT'); //для выхода ентер end; {-------------------------------------------------------------------------} procedure obrabotka; var pop:ukaz; x:integer; //промежуточная величина begin pop:=verh; //указатель на начало x:=0; while pop<>nil do//пока не конец списка begin pop^.inf.neopravdan:= pop^.inf.propusk- pop^.inf.opravdan; //подсчёт неоправданных пропусков if pop^.inf.propusk=0 then pop^.inf.procent:=0//если пропуски=0 то и процент =0 else pop^.inf.procent:=( pop^.inf.neopravdan/ pop^.inf.propusk)*100; //подсчёт процента
Страницы: 1, 2, 3, 4, 5
|