Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses Crt, LList, QQueue,PProcessing;
- var
- Q1,Q2:PoQueue;
- Q:PoQueue;
- Ch,Item:char;
- Ext,Soot:boolean;
- i,Num:longint;
- Elem:MyType;
- //----------------------------------------------------------------------------------------------------
- function NameError(sStr:string):boolean; //”гЄжЁп ¤«п Їа®ўҐаЄЁ Ё¬ҐЁ д ©« Ґ¤®ЇгбвЁ¬лҐ бЁ¬ў®«л;
- var
- Index,NumberSpace,LengthStr:byte;
- bErrors:boolean=false;
- begin
- NumberSpace:=0;
- LengthStr:=length(sStr);
- for Index:=1 to LengthStr do
- begin
- if sStr[Index] in [#0..#31,'\','/',':','*','?','"','<','>','|',#127,#176..#223,#244..#251,#253..#255] then bErrors:=true;
- if sStr[Index]=' ' then inc(NumberSpace);
- end;
- if (LengthStr=0) or (NumberSpace=LengthStr) then bErrors:=true;
- NameError:=bErrors;
- end;
- //----------------------------------------------------------------------------------------------------
- function Check(sStr:string):longint; //”гЄжЁп ¤«п Ї®«г票п 楫®Ј® зЁб« ;
- var
- x:longint;
- begin
- repeat
- clrscr;
- write(sStr);
- {$I-}
- readln(x);
- {$I+}
- until ioresult=0;
- Check:=x;
- end;
- //----------------------------------------------------------------------------------------------------
- procedure Printf(var Q:PoQueue);
- var
- T:PoQueue;
- begin
- new(T,Copy(Q));
- if T^.IsEmpty then writeln('<dek pust>')else
- begin
- while not T^.IsEmpty do
- write(T^.PuchFirst,' ');
- writeln;
- end;
- dispose(T,Destroy);
- end;
- //----------------------------------------------------------------------------------------------------
- procedure Save(var Q:PoQueue); //Џа®жҐ¤га ¤«п б®еа ҐЁп ў д ©«;
- var
- T:PoQueue;
- f:file of MyType;
- Name:string;
- begin
- clrscr;
- if not Q^.IsEmpty then
- begin
- write('Vvedite name file: ');
- readln(Name);
- clrscr;
- if not NameError(Name) then
- begin
- new(T,Copy(Q));
- assign(f,Name);
- rewrite(f);
- while not T^.IsEmpty do
- write(f,T^.PuchFirst);
- close(f);
- dispose(T,Destroy);
- write('Dek yspewno sohranen v file. ');
- end else write('Error. Nedopustimoe name file. ');
- end else write('Error. Dek pyst. ');
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- //----------------------------------------------------------------------------------------------------
- procedure Open(var Q:PoQueue); //Џа®жҐ¤га ¤«п § Ї®«ҐЁп Ё§ д ©« ;
- var
- T:PoQueue;
- f:file of MyType;
- Name:string;
- Soot:boolean = true;
- Elem:MyType;
- begin
- clrscr;
- new(T,Init);
- write('Vvedite name file: ');
- readln(Name);
- clrscr;
- if not NameError(Name) then
- begin
- assign(f,Name);
- {$I-}
- reset(f);
- {$I+}
- if ioresult<>0 then write('Error. Ne ydalos otkrit file. ') else
- begin
- while not EOF(f) and Soot do
- begin
- {$I-}
- read(f,Elem);
- {$I+}
- if ioresult<>0 then Soot:=false else T^.AddLast(Elem);
- end;
- if not Soot then write('Error. Ne ydalos schitat faila s deka do konca. ') else
- begin
- Q^.Copy(T);
- write('Dek yspewno schitan s faila. ');
- end;
- close(f);
- end;
- end else write('Error. Nedopystimoe name file. ');
- dispose(T,Destroy);
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- //----------------------------------------------------------------------------------------------------
- function get_the_address(var Q1,Q2:PoQueue):PoQueue;
- var
- Syb:char;
- begin
- repeat
- clrscr;
- writeln('Viberite dek:');
- writeln('1. First.');
- writeln('2. Second.');
- Syb:=readkey;
- until Syb in ['1'..'2'];
- case Syb of
- '1':get_the_address:=Q1;
- '2':get_the_address:=Q2;
- end;
- end;
- //----------------------------------------------------------------------------------------------------
- begin
- new(Q1,init);
- new(Q2,init);
- Item:='1';
- Ext:=false;
- Randomize;
- repeat
- clrscr;
- case Item of
- '1':begin
- writeln('1. Sozdat dek');
- writeln('2. Edit dek.');
- writeln('3. Pokazat dek');
- writeln('4. Obrabotat dek');
- writeln('5. Sohranit dek');
- writeln('0. Exit.');
- end;
- '2':begin
- writeln('1. s klav.');
- writeln('2. random.');
- writeln('3. file.');
- writeln('0. exit.');
- end;
- '3':begin
- writeln('1.add element v nachalo.');
- writeln('2.add element v konec.');
- writeln('3.posmotret znachenie elem v nachale.');
- writeln('4.posmotret znachenie elem v konce.');
- writeln('5.delete elem iz nachala.');
- writeln('6.delete elem iz konca.');
- writeln('7.vzyat elem v nachale');
- writeln('8.vzyat elem v konce.');
- writeln('9.edit znachenie elem v nachale.');
- writeln('z.edit zhachenie elem v konce.');
- writeln('x.clear');
- writeln('0.exit.');
- end;
- end;
- Ch:=readkey;
- case Item of
- '1':case Ch of
- '1':Item:='2';
- '2':Item:='3';
- '3':begin
- Q:=get_the_address(Q1,Q2);
- clrscr;
- writeln('elementi ocheredi: ');
- Printf(Q);
- write('Dlya prodolzeniya nazmite klav...');
- readkey;
- end;
- '4':begin
- clrscr;
- case Processing(Q1,Q2) of
- 0:writeln('New dek sostavlen');
- 1:writeln('Dek ne sozdan.');
- end;
- write('Dlya prodolzeniya nazmite klav...');
- readkey;
- end;
- '5':begin
- Q:=get_the_address(Q1,Q2);
- Save(Q);
- end;
- '0':Ext:=true;
- end;
- '2':case Ch of
- '1':begin
- Q:=get_the_address(Q1,Q2);
- if not Q^.IsEmpty then Q^.Clear;
- Num:=Check('Vvedite kol-vo elementov deka: ');
- for i:=1 to Num do
- begin
- Soot:=true;
- repeat
- if Soot then Soot:=false else
- begin
- clrscr;
- write('Error. nekorrektniy vvod. Dlya prodolzeniya nazmite klav...');
- readkey;
- end;
- clrscr;
- write('Vvedite element : ');
- {$I-}
- readln(Elem);
- {$I+}
- until ioresult=0;
- Q^.AddLast(Elem);
- end;
- clrscr;
- writeln('Elementi deka: ');
- Printf(Q);
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '2':begin
- Q:=get_the_address(Q1,Q2);
- if not Q^.IsEmpty then Q^.Clear;
- Num:=Check('Vvedite kol-vo elementov deka: ');
- for i:=1 to Num do
- Q^.AddLast(chr(Random(215)+21));
- clrscr;
- writeln('Elementi deka: ');
- Printf(Q);
- write('Dlya prodolzeniya nazmite klav...');
- readkey;
- end;
- '3':begin
- Q:=get_the_address(Q1,Q2);
- Open(Q);
- end;
- '0':Item:='1';
- end;
- '3':case Ch of
- '1':begin
- Q:=get_the_address(Q1,Q2);
- Soot:=true;
- repeat
- if Soot then Soot:=false else
- begin
- clrscr;
- write('Error. Nekorektniy vvod. Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- clrscr;
- write('Vvedite element : ');
- {$I-}
- readln(Elem);
- {$I+}
- until ioresult=0;
- Q^.AddFirst(Elem);
- write('Element yspewno dobavlen. Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '2':begin
- Q:=get_the_address(Q1,Q2);
- Soot:=true;
- repeat
- if Soot then Soot:=false else
- begin
- clrscr;
- write('Error. Nekorrektniy vvod. Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- clrscr;
- write('Vvedite znachenie elementa: ');
- {$I-}
- readln(Elem);
- {$I+}
- until ioresult=0;
- Q^.AddLast(Elem);
- write('Element yspewno dobavlen. Dlya prodolzenia namzite klav...');
- readkey;
- end;
- '3':begin
- Q:=get_the_address(Q1,Q2);
- clrscr;
- if Q^.IsEmpty then write('Error. Dek pust. ') else writeln('Znachenie elementa: ',Q^.SeeFirst);
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '4':begin
- Q:=get_the_address(Q1,Q2);
- clrscr;
- if Q^.IsEmpty then write('Error. Dek pust. ') else writeln('Znachenie elementa: ',Q^.SeeLast);
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '5':begin
- Q:=get_the_address(Q1,Q2);
- clrscr;
- if Q^.IsEmpty then write('Error. Dek pust. ') else
- begin
- Q^.RemoveFirst;
- write('Element yspewno ydalen. ');
- end;
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '6':begin
- Q:=get_the_address(Q1,Q2);
- clrscr;
- if Q^.IsEmpty then write('Error. Dek pust. ') else
- begin
- Q^.RemoveLast;
- write('Element yspewno udalen. ');
- end;
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '7':begin
- Q:=get_the_address(Q1,Q2);
- clrscr;
- if Q^.IsEmpty then write('Error. Dek pust. ') else writeln('Znachenie elementa: ',Q^.PuchFirst);
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '8':begin
- Q:=get_the_address(Q1,Q2);
- clrscr;
- if Q^.IsEmpty then write('Error. Dek pust. ') else writeln('Znachenie elementa: ',Q^.PuchLast);
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '9':begin
- Q:=get_the_address(Q1,Q2);
- Soot:=true;
- repeat
- if Soot then Soot:=false else
- begin
- clrscr;
- write('Error. Nekorrektniy vvod. Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- clrscr;
- write('Vvedite elementi: ');
- {$I-}
- readln(Elem);
- {$I+}
- until ioresult=0;
- Q^.ChangeFirst(Elem);
- write('Element yspewno izmenen. Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- 'z':begin
- Q:=get_the_address(Q1,Q2);
- Soot:=true;
- repeat
- if Soot then Soot:=false else
- begin
- clrscr;
- write('Error. Nekorrektniy vvod. Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- clrscr;
- write('Vvedite element: ');
- {$I-}
- readln(Elem);
- {$I+}
- until ioresult=0;
- Q^.ChangeLast(Elem);
- write('Element yspewno izmenen. Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- 'x':begin
- Q:=get_the_address(Q1,Q2);
- clrscr;
- if Q^.IsEmpty then write('Error. Dek pust. ') else
- begin
- Q^.Clear;
- write('Dek yspewno ochiwen. ');
- end;
- write('Dlya prodolzenia nazmite klav...');
- readkey;
- end;
- '0':Item:='1';
- end;
- end;
- until Ext;
- dispose(Q1,Destroy);
- dispose(Q2,Destroy);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement