Advertisement
Guest User

11111111

a guest
May 24th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 10.18 KB | None | 0 0
  1. uses Crt, LList, QQueue,PProcessing;
  2.  
  3.  
  4.  
  5. var
  6.     Q1,Q2:PoQueue;
  7.     Q:PoQueue;
  8.     Ch,Item:char;
  9.     Ext,Soot:boolean;
  10.     i,Num:longint;
  11.     Elem:MyType;
  12.  
  13. //----------------------------------------------------------------------------------------------------
  14. function NameError(sStr:string):boolean; //”г­ЄжЁп ¤«п Їа®ўҐаЄЁ Ё¬Ґ­Ё д ©«  ­  ­Ґ¤®ЇгбвЁ¬лҐ бЁ¬ў®«л;
  15. var
  16.     Index,NumberSpace,LengthStr:byte;
  17.     bErrors:boolean=false;
  18. begin
  19.     NumberSpace:=0;
  20.     LengthStr:=length(sStr);
  21.     for Index:=1 to LengthStr do
  22.     begin
  23.         if sStr[Index] in [#0..#31,'\','/',':','*','?','"','<','>','|',#127,#176..#223,#244..#251,#253..#255] then bErrors:=true;
  24.         if sStr[Index]=' ' then inc(NumberSpace);
  25.     end;
  26.     if (LengthStr=0) or (NumberSpace=LengthStr) then bErrors:=true;
  27.     NameError:=bErrors;
  28. end;
  29. //----------------------------------------------------------------------------------------------------
  30. function Check(sStr:string):longint; //”г­ЄжЁп ¤«п Ї®«г祭Ёп 楫®Ј® зЁб« ;
  31. var
  32.     x:longint;
  33. begin
  34.     repeat
  35.         clrscr;
  36.         write(sStr);
  37.         {$I-}
  38.         readln(x);
  39.         {$I+}
  40.     until ioresult=0;
  41.     Check:=x;
  42. end;
  43. //----------------------------------------------------------------------------------------------------
  44. procedure Printf(var Q:PoQueue);
  45. var
  46.     T:PoQueue;
  47. begin
  48.     new(T,Copy(Q));
  49.     if T^.IsEmpty then writeln('<dek pust>')else
  50.     begin
  51.         while not T^.IsEmpty do
  52.             write(T^.PuchFirst,' ');
  53.         writeln;
  54.     end;
  55.     dispose(T,Destroy);
  56. end;
  57. //----------------------------------------------------------------------------------------------------
  58. procedure Save(var Q:PoQueue); //Џа®жҐ¤га  ¤«п б®еа ­Ґ­Ёп ў д ©«;
  59. var
  60.     T:PoQueue;
  61.     f:file of MyType;
  62.     Name:string;
  63. begin
  64.     clrscr;
  65.     if not Q^.IsEmpty then
  66.     begin
  67.         write('Vvedite name file: ');
  68.         readln(Name);
  69.         clrscr;
  70.         if not NameError(Name) then
  71.         begin
  72.             new(T,Copy(Q));
  73.             assign(f,Name);
  74.             rewrite(f);
  75.             while not T^.IsEmpty do
  76.                 write(f,T^.PuchFirst);
  77.             close(f);
  78.             dispose(T,Destroy);
  79.             write('Dek yspewno sohranen v file. ');
  80.         end else write('Error. Nedopustimoe name file. ');
  81.     end else write('Error. Dek pyst. ');
  82.     write('Dlya prodolzenia nazmite klav...');
  83.     readkey;
  84. end;
  85. //----------------------------------------------------------------------------------------------------
  86. procedure Open(var Q:PoQueue); //Џа®жҐ¤га  ¤«п § Ї®«­Ґ­Ёп Ё§ д ©« ;
  87. var
  88.     T:PoQueue;
  89.     f:file of MyType;
  90.     Name:string;
  91.     Soot:boolean = true;
  92.     Elem:MyType;
  93. begin
  94.     clrscr;
  95.     new(T,Init);
  96.     write('Vvedite name file: ');
  97.     readln(Name);
  98.     clrscr;
  99.     if not NameError(Name) then
  100.     begin
  101.         assign(f,Name);
  102.         {$I-}
  103.         reset(f);
  104.         {$I+}
  105.         if ioresult<>0 then write('Error. Ne ydalos otkrit file. ') else
  106.         begin
  107.             while not EOF(f) and Soot do
  108.             begin
  109.                 {$I-}
  110.                 read(f,Elem);
  111.                 {$I+}
  112.                 if ioresult<>0 then Soot:=false else T^.AddLast(Elem);
  113.             end;
  114.             if not Soot then write('Error. Ne ydalos schitat faila s deka do konca. ') else
  115.             begin
  116.                 Q^.Copy(T);
  117.                 write('Dek yspewno schitan s faila. ');
  118.             end;
  119.             close(f);
  120.         end;
  121.     end else write('Error. Nedopystimoe name file. ');
  122.     dispose(T,Destroy);
  123.     write('Dlya prodolzenia nazmite klav...');
  124.     readkey;
  125. end;
  126. //----------------------------------------------------------------------------------------------------
  127. function get_the_address(var Q1,Q2:PoQueue):PoQueue;
  128. var
  129.     Syb:char;
  130. begin
  131.     repeat
  132.         clrscr;
  133.         writeln('Viberite dek:');
  134.         writeln('1. First.');
  135.         writeln('2. Second.');
  136.         Syb:=readkey;
  137.     until Syb in ['1'..'2'];
  138.     case Syb of
  139.         '1':get_the_address:=Q1;
  140.         '2':get_the_address:=Q2;
  141.     end;
  142. end;
  143. //----------------------------------------------------------------------------------------------------
  144. begin
  145.     new(Q1,init);
  146.     new(Q2,init);
  147.     Item:='1';
  148.     Ext:=false;
  149.     Randomize;
  150.     repeat
  151.         clrscr;
  152.         case Item of
  153.         '1':begin
  154.                 writeln('1. Sozdat dek');
  155.                 writeln('2. Edit dek.');
  156.                 writeln('3. Pokazat dek');
  157.                 writeln('4. Obrabotat dek');
  158.                 writeln('5. Sohranit dek');
  159.                 writeln('0. Exit.');
  160.             end;
  161.         '2':begin
  162.                 writeln('1. s klav.');
  163.                 writeln('2. random.');
  164.                 writeln('3. file.');
  165.                 writeln('0. exit.');
  166.             end;
  167.         '3':begin
  168.                 writeln('1.add element v nachalo.');
  169.                 writeln('2.add element v konec.');
  170.                 writeln('3.posmotret znachenie elem v nachale.');
  171.                 writeln('4.posmotret znachenie elem v konce.');
  172.                 writeln('5.delete elem iz nachala.');
  173.                 writeln('6.delete elem iz konca.');
  174.                 writeln('7.vzyat elem v nachale');
  175.                 writeln('8.vzyat elem v konce.');
  176.                 writeln('9.edit znachenie elem v nachale.');
  177.                 writeln('z.edit zhachenie elem v konce.');
  178.                 writeln('x.clear');
  179.                 writeln('0.exit.');
  180.             end;
  181.         end;
  182.         Ch:=readkey;
  183.         case Item of
  184.         '1':case Ch of
  185.             '1':Item:='2';
  186.             '2':Item:='3';
  187.             '3':begin
  188.                     Q:=get_the_address(Q1,Q2);
  189.                     clrscr;
  190.                     writeln('elementi ocheredi: ');
  191.                     Printf(Q);
  192.                     write('Dlya prodolzeniya nazmite klav...');
  193.                     readkey;
  194.                 end;
  195.             '4':begin
  196.                     clrscr;
  197.                     case Processing(Q1,Q2) of
  198.                         0:writeln('New dek sostavlen');
  199.                         1:writeln('Dek ne sozdan.');
  200.                     end;
  201.                     write('Dlya prodolzeniya nazmite klav...');
  202.                     readkey;
  203.                 end;
  204.             '5':begin
  205.                 Q:=get_the_address(Q1,Q2);
  206.                     Save(Q);
  207.                 end;
  208.             '0':Ext:=true;
  209.             end;
  210.         '2':case Ch of
  211.             '1':begin
  212.                                 Q:=get_the_address(Q1,Q2);
  213.                     if not Q^.IsEmpty then Q^.Clear;
  214.                     Num:=Check('Vvedite kol-vo elementov deka: ');
  215.                     for i:=1 to Num do
  216.                     begin
  217.                         Soot:=true;
  218.                         repeat
  219.                             if Soot then Soot:=false else
  220.                             begin
  221.                                 clrscr;
  222.                                 write('Error. nekorrektniy vvod. Dlya prodolzeniya nazmite klav...');
  223.                                 readkey;
  224.                             end;
  225.                             clrscr;
  226.                             write('Vvedite element : ');
  227.                             {$I-}
  228.                             readln(Elem);
  229.                             {$I+}
  230.                         until ioresult=0;
  231.                         Q^.AddLast(Elem);
  232.                     end;
  233.                     clrscr;
  234.                     writeln('Elementi deka: ');
  235.                     Printf(Q);
  236.                     write('Dlya prodolzenia nazmite klav...');
  237.                     readkey;
  238.                 end;
  239.             '2':begin
  240.                                     Q:=get_the_address(Q1,Q2);
  241.                     if not Q^.IsEmpty then Q^.Clear;
  242.                     Num:=Check('Vvedite kol-vo elementov deka: ');
  243.                     for i:=1 to Num do
  244.                         Q^.AddLast(chr(Random(215)+21));
  245.                     clrscr;
  246.                     writeln('Elementi deka: ');
  247.                     Printf(Q);
  248.                     write('Dlya prodolzeniya nazmite klav...');
  249.                     readkey;
  250.                 end;
  251.             '3':begin
  252.                     Q:=get_the_address(Q1,Q2);
  253.                     Open(Q);
  254.                 end;
  255.             '0':Item:='1';
  256.             end;
  257.         '3':case Ch of
  258.             '1':begin
  259.                     Q:=get_the_address(Q1,Q2);
  260.                     Soot:=true;
  261.                     repeat
  262.                         if Soot then Soot:=false else
  263.                         begin
  264.                             clrscr;
  265.                             write('Error. Nekorektniy vvod. Dlya prodolzenia nazmite klav...');
  266.                             readkey;
  267.                         end;
  268.                         clrscr;
  269.                         write('Vvedite element : ');
  270.                         {$I-}
  271.                         readln(Elem);
  272.                         {$I+}
  273.                     until ioresult=0;
  274.                     Q^.AddFirst(Elem);
  275.                     write('Element yspewno dobavlen. Dlya prodolzenia nazmite klav...');
  276.                     readkey;
  277.                 end;
  278.             '2':begin
  279.             Q:=get_the_address(Q1,Q2);
  280.                     Soot:=true;
  281.                     repeat
  282.                         if Soot then Soot:=false else
  283.                         begin
  284.                             clrscr;
  285.                             write('Error. Nekorrektniy vvod. Dlya prodolzenia nazmite klav...');
  286.                             readkey;
  287.                         end;
  288.                         clrscr;
  289.                         write('Vvedite znachenie elementa: ');
  290.                         {$I-}
  291.                         readln(Elem);
  292.                         {$I+}
  293.                     until ioresult=0;
  294.                     Q^.AddLast(Elem);
  295.                     write('Element yspewno dobavlen. Dlya prodolzenia namzite klav...');
  296.                     readkey;
  297.                 end;
  298.             '3':begin
  299.             Q:=get_the_address(Q1,Q2);
  300.                     clrscr;
  301.                     if Q^.IsEmpty then write('Error. Dek pust. ') else writeln('Znachenie elementa: ',Q^.SeeFirst);
  302.                     write('Dlya prodolzenia nazmite klav...');
  303.                     readkey;
  304.                 end;
  305.             '4':begin
  306.             Q:=get_the_address(Q1,Q2);
  307.                     clrscr;
  308.                     if Q^.IsEmpty then write('Error. Dek pust. ') else writeln('Znachenie elementa: ',Q^.SeeLast);
  309.                     write('Dlya prodolzenia nazmite klav...');
  310.                     readkey;
  311.                 end;
  312.             '5':begin
  313.             Q:=get_the_address(Q1,Q2);
  314.                     clrscr;
  315.                     if Q^.IsEmpty then write('Error. Dek pust. ') else
  316.                     begin
  317.                         Q^.RemoveFirst;
  318.                         write('Element yspewno ydalen. ');
  319.                     end;
  320.                     write('Dlya prodolzenia nazmite klav...');
  321.                     readkey;
  322.                 end;
  323.             '6':begin
  324.             Q:=get_the_address(Q1,Q2);
  325.                     clrscr;
  326.                     if Q^.IsEmpty then write('Error. Dek pust. ') else
  327.                     begin
  328.                         Q^.RemoveLast;
  329.                         write('Element yspewno udalen. ');
  330.                     end;
  331.                     write('Dlya prodolzenia nazmite klav...');
  332.                     readkey;
  333.                 end;
  334.             '7':begin
  335.             Q:=get_the_address(Q1,Q2);
  336.                     clrscr;
  337.                     if Q^.IsEmpty then write('Error. Dek pust. ') else writeln('Znachenie elementa: ',Q^.PuchFirst);
  338.                     write('Dlya prodolzenia nazmite klav...');
  339.                     readkey;
  340.                 end;
  341.             '8':begin
  342.             Q:=get_the_address(Q1,Q2);
  343.                     clrscr;
  344.                     if Q^.IsEmpty then write('Error. Dek pust. ') else writeln('Znachenie elementa: ',Q^.PuchLast);
  345.                     write('Dlya prodolzenia nazmite klav...');
  346.                     readkey;
  347.                 end;
  348.             '9':begin
  349.             Q:=get_the_address(Q1,Q2);
  350.                     Soot:=true;
  351.                     repeat
  352.                         if Soot then Soot:=false else
  353.                         begin
  354.                             clrscr;
  355.                             write('Error. Nekorrektniy vvod. Dlya prodolzenia nazmite klav...');
  356.                             readkey;
  357.                         end;
  358.                         clrscr;
  359.                         write('Vvedite elementi: ');
  360.                         {$I-}
  361.                         readln(Elem);
  362.                         {$I+}
  363.                     until ioresult=0;
  364.                     Q^.ChangeFirst(Elem);
  365.                     write('Element yspewno izmenen. Dlya prodolzenia nazmite klav...');
  366.                     readkey;
  367.                 end;
  368.             'z':begin
  369.             Q:=get_the_address(Q1,Q2);
  370.                     Soot:=true;
  371.                     repeat
  372.                         if Soot then Soot:=false else
  373.                         begin
  374.                             clrscr;
  375.                             write('Error. Nekorrektniy vvod. Dlya prodolzenia nazmite klav...');
  376.                             readkey;
  377.                         end;
  378.                         clrscr;
  379.                         write('Vvedite element: ');
  380.                         {$I-}
  381.                         readln(Elem);
  382.                         {$I+}
  383.                     until ioresult=0;
  384.                     Q^.ChangeLast(Elem);
  385.                     write('Element yspewno izmenen. Dlya prodolzenia nazmite klav...');
  386.                     readkey;
  387.                 end;
  388.             'x':begin
  389.             Q:=get_the_address(Q1,Q2);
  390.                     clrscr;
  391.                     if Q^.IsEmpty then write('Error. Dek pust. ') else
  392.                     begin
  393.                         Q^.Clear;
  394.                         write('Dek yspewno ochiwen. ');
  395.                     end;
  396.                     write('Dlya prodolzenia nazmite klav...');
  397.                     readkey;
  398.                     end;
  399.             '0':Item:='1';
  400.             end;
  401.         end;
  402.     until Ext;
  403.     dispose(Q1,Destroy);
  404.     dispose(Q2,Destroy);
  405. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement