![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Наташа |
![]()
Сообщение
#1
|
|||
Гость ![]() |
Помогите, пожалуйста, не могу никак найти ошибку. Замучалась, вроде всё правильно, но на четвёртом блоке программа сбивается.
program Spisok; Прикрепленные файлы ![]() |
|||
![]() ![]() |
Наташа |
![]()
Сообщение
#2
|
Гость ![]() |
Спасибо ребята, я нашла ошибку, теперь всё работает!
Код program Spisok; uses crt; type oc=record mat,ang,inf,alg,fiz:integer; end; tsp=^sp; sp=record next:tsp; name:string[15]; voz:integer; pol:char; ocen:oc; end; var head,head1,pl,pr:tsp; k,n,m,i,u,j,g:integer; yl,yr:tsp; s:string; MASS:array [1..100] of integer; f1:text; sl,sc,sr:tsp; {1***********************} begin n:=6; k:=0; g:=0; pr:=nil; assign(f1,'stu.txt'); reset(f1); if n=0 then writeln('” ©« stu.txt Їгбв') else for i:=1 to n do begin if k=0 then begin k:=k+1; new(head); readln(f1,head^.name); write(head^.name,' '); readln(f1,head^.voz); write(head^.voz,' '); readln(f1,head^.pol); write(head^.pol,' '); readln(f1,head^.ocen.mat); write(head^.ocen.mat,' '); readln(f1,head^.ocen.ang); write(head^.ocen.ang,' '); readln(f1,head^.ocen.inf); write(head^.ocen.inf,' '); readln(f1,head^.ocen.alg); write(head^.ocen.alg,' '); readln(f1,head^.ocen.fiz); writeln(head^.ocen.fiz); new(pr); head^.next:=pr; pl:=head; end else begin readln(f1,pr^.name); write(pr^.name,' '); readln(f1,pr^.voz); write(pr^.voz,' '); readln(f1,pr^.pol); write(pr^.pol,' '); readln(f1,pr^.ocen.mat); write(pr^.ocen.mat,' '); readln(f1,pr^.ocen.ang); write(pr^.ocen.ang,' '); readln(f1,pr^.ocen.inf); write(pr^.ocen.inf,' '); readln(f1,pr^.ocen.alg); write(pr^.ocen.alg,' '); readln(f1,pr^.ocen.fiz); writeln(pr^.ocen.fiz); if i<n then begin pl:=pr; new(pr); pl^.next:=pr; end else pr^.next:=nil; end; end; pr:=nil; pl:=nil; {2***********************} pr:=head; i:=0; for i:=1 to n do begin if pr^.voz<=17 then begin writeln('(1) '); write(pr^.name); write(pr^.voz); write(pr^.pol); write(pr^.ocen.mat); write(pr^.ocen.ang); write(pr^.ocen.inf); write(pr^.ocen.alg); writeln(pr^.ocen.fiz); break; end else begin if (pr^.voz<=15)or(pr^.voz>=80) then Writeln('ЋиЁЎ®зл© ў®§а бв ў ЇЁбЄҐ'); if i = n then begin Writeln('‘в㤥⮢ 17 «Ґв Ё ¬« ¤иҐ Ґв ў бЇбЄҐ'); break; end else begin pr:=pr^.next; end; end; end; pr:=nil; {3************************} writeln('(2) '); sl:=head; sr:=head^.next; k:=0; if (head^.pol='m') then Begin dispose(head); head:=sr; sc:=nil; sl:=nil; sr:=nil; end else while (sr<>nil) do if (sr^.pol='m') then Begin sl^.next:=sr^.next; dispose(sr); sl:=nil; sr:=nil; end else begin sl:=sr; sr:=sr^.next; k:=k+1; end; sl:=nil; sr:=nil; {4************************} writeln('(3) '); if k<>n then n:=n-1 else writeln('Њг¦зЁ Ґв ў бЇЁбЄҐ'); pr:=head; i:=0; for i:=1 to n do begin if i<>1 then pr:=pr^.next; mass[i]:=(pr^.ocen.mat + pr^.ocen.ang + pr^.ocen.inf + pr^.ocen.alg + pr^.ocen.fiz); end; pr:=nil; for i:=1 to n do begin m:=0; for j:=1 to n do begin if mass[j]>m then begin k:=j; m:=mass[j]; end; end; pr:=head; j:=0; while (j<(k-1)) do Begin pr:=pr^.next; j:=j+1; end; sr:=pr; new(pr); pr^:=sr^; if i=1 then begin head1:=pr; pr:=nil; end else if i<n then if i=2 then begin pl:=pr; head1^.next:=pl; pr:=nil; end else if g=0 then begin sl:=pr; pl^.next:=sl; g:=g+1; pr:=nil; end else begin pl:=pr; sl^.next:=pl; g:=g-1; pr:=nil; end else begin if g=0 then pl^.next:=pr else sl^.next:=pr; pr^.next:=nil; end; mass[k]:=0; end; head:=head1; head1:=nil; sl:=nil; sr:=nil; pl:=nil; pr:=nil; {5************************} pr:=head; for i:=1 to n do begin write(pr^.name); write(pr^.voz); write(pr^.pol); write(pr^.ocen.mat); write(pr^.ocen.ang); write(pr^.ocen.inf); write(pr^.ocen.alg); writeln(pr^.ocen.fiz); if i = n then begin break; end else begin pr:=pr^.next; end; end; pr:=nil; {*************************} close(f1); readln; end. |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 12:31 |