Author: Not specified Language: pascal
Description: Not specified Timestamp: 2013-05-17 20:45:56 +0000
View raw paste Reply
  1. type                 //????????? ???????
  2.   queue=^students;   //Students - ??? ???????? ???????, Queue - ??? ????????? ?? ???????
  3.   students=record
  4.     name,surname:string;   //???? ???, ???????
  5.     course,math,phys,inf:integer; //???? ??????
  6.     next:queue; //????????? ?? ????????? ??????? ???????
  7.   end;
  8.   //??????? ??????? ??????????????? ??????
  9.   function Mid(var cur:queue):real;
  10.   begin
  11.     Mid:=(cur^.math + cur^.phys + cur^.inf)/3; //Cur - ????????? ?? ??????? ???????(?.?. ????????),
  12.   end;                                         // ?????? ???????? ????? ??????????
  13.  
  14.   //????????? ????? ????? ??? ????????? ???????
  15.   procedure input(var name, surname:string; var course, math, phys, inf:integer);
  16.   var str:string; //???? ??????????????? ? ??? ????? ????? ???????, ? ?????? str
  17.   begin
  18.     writeln('??????? ???????,???,???? (????? ???????)');
  19.     readln(str);
  20.     surname:=copy(str,1,pos(',',str)-1); //????????? ? ??????? ?????????? ?? ?????? ???????
  21.     delete(str,1,pos(',',str));      //??????? ?? ?????? str ??????? ? ?????? ???????
  22.     name:=copy(str,1,pos(',',str)-1);  //?? ?? ????? ?????? ? ??????
  23.     delete(str,1,pos(',',str));
  24.     if pos(',',str)>0 then           //????????? ??? ????? ????? ??? ?????????? ?? ???????,
  25.        course:=strtoint(copy(str,1,pos(',',str)-1)) // ???? ?????, ???? ?????? ?? ????? ??????
  26.     else if pos('.',str)>0 then
  27.        course:=strtoint(copy(str,1,pos('.',str)-1))
  28.     else
  29.        course:=strtoint(str);
  30.     //??? ?? ?? ????? ? ????????
  31.     writeln('??????? ?????? ?? ??????????,??????,??????????? (????? ???????)');
  32.     readln(str);
  33.     math:=strtoint(copy(str,1,pos(',',str)-1));
  34.     delete(str,1,pos(',',str));
  35.     phys:=strtoint(copy(str,1,pos(',',str)-1));
  36.     delete(str,1,pos(',',str));
  37.     if pos(',',str)>0 then
  38.        inf:=strtoint(copy(str,1,pos(',',str)-1))
  39.     else if pos('.',str)>0 then
  40.        inf:=strtoint(copy(str,1,pos('.',str)-1))
  41.     else
  42.        inf:=strtoint(str);
  43.   end;
  44.   //????????? ?????????? ? ???????. ?? ?????????? ???????, ??????? ??????????? ? ????? ??????
  45.   procedure Add(var head,tail:queue);  //????? ??????? ??? ???? ?????? ????????? head ? tail
  46.   begin
  47.     if head=Nil then      //???? ?????? ??????? ?????? ????
  48.     begin
  49.       new(head);       //???????? ??? ???? ??????
  50.       tail:=head;      // ????????? ?? ????????? ??????? ??? ?? ????????? ?? ??????(?.?. ?? ????)
  51.     end  else
  52.     begin
  53.       new(tail^.next);  //? ????????? ?????? ???????? ?????? ??? ????????? ????? ?????????? ???????
  54.       tail:=tail^.next; //?????? ????????? ??????? ? ???????? ?????????
  55.     end;
  56.   input(tail^.surname,tail^.name,tail^.course,
  57.         tail^.math,tail^.phys,tail^.inf); //????? ????????? input ?????????? ?????????? ? ????????? ???????
  58.   tail^.next:=Nil; //?????????? ???????? ???(??????? ????????? ???????? ?? Nil)
  59.   end;
  60.   // ????? ?????? ?????????
  61.   procedure Show(var head:queue);
  62.   var cur:queue;   //Cur - ????????? ?? ?????? ???????
  63.       i:integer;
  64.   begin
  65.     i:=1;  //??????? ?????????? ??????? ????????? ??????
  66.     cur:=head; //????? ?????????? ? ??????? ????????
  67.     while cur<>Nil do //???? ?????? ??????? ??????????
  68.     begin      //??????? ??????????
  69.       writeln(inttostr(i)+'. '+cur^.name+' '+cur^.surname+', '+inttostr(cur^.course)+
  70.       ' ????. ??????: '+inttostr(cur^.math)+', '+inttostr(cur^.phys)+', '+inttostr(cur^.inf)+'.');
  71.       cur:=cur^.next;   //????????? ?? ???? ???????
  72.       i:=i+1;        //???????? ???????
  73.     end;
  74.   end;
  75.   //????????? ????????, ?? ?????? ??????(?.?. ??? ??????? ???????? ? ????????)
  76.   //???????? ???? ? ?????? ???????, ?? ???????????
  77.   procedure Delete(var head:queue);
  78.  
  79.   var temp:queue;
  80.   begin
  81.     temp:=head;    //?????? ????????? ????????? ?? ?????? ???????
  82.     head:=head^.next; //?????? ?????? ????????? ???????? ????????(?????????? ??????)
  83.     dispose(temp);  //??????? ?????? ??? ?????? ??????? ????? ????????? temp
  84.   end;
  85.   //?????????? ???????? ??????????
  86.   procedure Best(var head:queue);
  87.   var best,cur:queue;
  88.   begin
  89.   cur:=head;  //???????? ????????? ? ??????? ????????
  90.   best:=cur;  //?????????? ????????? ?? ??????? ????????? ?? ?????? ???????
  91.   while (cur <> Nil) do //???? ?????? ??????? ??????????
  92.   begin
  93.     if Mid(best) < Mid(cur) then //?????????? ?????? ???????(?? ?????? ??????) ? ???????
  94.       best:=cur;       //???? ?????? ??????? ????? ?????? ???????, ?? ?????? ???????? ??????
  95.     cur:=cur^.next;
  96.   end;    //??????? ?????????? ? ?????? ????????
  97.   writeln(best^.surname,' ',best^.name, ', ??????? ', best^.course, '-?? ????? ?????? ????? ?????????' );
  98.   end;
  99.  
  100.   var
  101.     n:integer;   //?????????? ?????? ????????
  102.     head,tail: queue; //????????? ?? ?????? ? ????? ???????
  103. begin
  104.   n:=0;
  105.   while n>-1 do   //??????? ?????????, N>-1(???? ???????????? ?? ?????? 4)
  106.   begin
  107.     writeln('???????:'+#10+'1. ????? ???????? ???????? ? ??????'+#10+
  108.                           '2. ????? ??????? ??????'+#10+
  109.                           '3. ??????? ??? ???????? ??????????? ????????'+#10+
  110.                           '4. ????? ?? ?????????'+#10);
  111.     readln(n); //?????? ?????
  112.          if n=1 then Add(head,tail)
  113.     else if n=2 then Show(head)
  114.     else if n=3 then Best(head)
  115.     else if n=4 then n:=-1
  116.   end;
  117. end.
  118.  
View raw paste Reply