IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Однонаправленный список (Студенты), работа со списком
Наташа
сообщение 13.10.2007 3:49
Сообщение #1


Гость






Помогите, пожалуйста, не могу никак найти ошибку. Замучалась, вроде всё правильно, но на четвёртом блоке программа сбивается.

М
Наташа, используй теги, пожалуйста (выделить текст, выбрать нужный тег в меню CODE). А вообще, такие большие тексты лучше прикреплять файлами.
-- Lapp



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;
pl:=nil;
{2***********************}
new(pr);
pr:=head;
pr^.next:=head^.next;
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************************}
new(sl);
sl:=head;
sr:=sl^.next;k:=0;
if (head^.pol='m') then
Begin
new(sc);
sc:=head;
head:=sl^.next;

end
else
while (sr<>nil) do
if (sr^.pol='m') then
Begin
sl^.next:=sr^.next;
dispose(sr);
sl:=nil;
end
else
begin
sl:=sr;
sr:=sr^.next; k:=k+1;
end;

{4************************}
if k<>n then n:=n-1 else writeln('Њг¦зЁ­ ­Ґв ў бЇЁбЄҐ');
new(pl);
new(pr);
new(head1);
pr:=head;
pr^.next:=head^.next;
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);
writeln(mass[i]);
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;
writeln(k);

pr:=head;

while j<=(k-1) do
Begin
sr:=pr^.next;
pr:=sr;
j:=j+1;
end;
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=1 then head1:=pr
else
if i<n then
if i=2 then
begin pl:=pr; head1^.next:=pl;
end
else
if g=0 then
begin new(sl); sl:=pr; pl^.next:=sl; g:=g+1;
end
else
begin new(pl); pl:=pr; sl^.next:=pl; g:=g-1;
end
else
begin
if g=0 then pl^.next:=pr else sl^.next:=pr;
pr^.next:=nil;
end;
mass[k]:=0;
end;
head:=head1;
head^.next:=head1^.next;
head1:=nil;

{5************************}
new(pr);
pr:=head;
pr^.next:=head^.next;
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.


Прикрепленные файлы
Прикрепленный файл  stu.txt ( 270 байт ) Кол-во скачиваний: 179
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Наташа
сообщение 14.10.2007 9:17
Сообщение #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.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 12:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"