Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program project1;
- {$mode objfpc}{$H+}
- uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes
- { you can add units after this };
- type
- Ttab=array[1..10] of integer;
- var
- ldp,tn:char; {L/R}
- tab:Ttab;
- i,wielkoscbazy:integer;
- wyjscie:boolean; {przy wyjsciu shift ma zmienic na 1 jezeli nie bylo bledu}
- procedure shift(var zmienna:char; var baza:Ttab; var liczba:integer);
- var
- tymczas:Ttab;
- begin
- {spr czy liczba jest w bazie jak nie wyjscie false}
- for i:=1 to 10 do
- begin
- if baza[i]=liczba then
- begin
- wyjscie:=true;
- end;
- end;
- {dzialanie}
- if wyjscie=true then
- begin
- {w prawo}
- if zmienna='P' then
- begin
- for i:=1 to liczba do
- begin
- tymczas[i+1]:=baza[i];
- if i=liczba then
- tymczas[1]:=tymczas[i+1];
- end;
- end;
- {w lewo}
- if zmienna='L' then
- begin
- for i:=liczba downto 1 do
- begin
- if i<>1 then
- tymczas[i-1]:=baza[i];
- if i=1 then
- tymczas[liczba]:=baza[1];
- end;
- end;
- baza:=tymczas;
- end;
- end;
- label
- start,kont,liczba;
- begin
- wielkoscbazy:=5;
- {zaladowanie bazy liczbami - nie powinny sie powtarzac}
- for i:=1 to wielkoscbazy do
- begin
- write('Podaj liczby do bazy ', i,'/',wielkoscbazy,' ');
- readln(tab[i]);
- end;
- start:
- {pytanie}
- liczba:
- write('Wybierz tryb przesuniecia [L-lewo/P-prawo]: ');
- readln(ldp);
- if not ((ldp='L') or (ldp='P')) then
- begin
- writeln('blad! podaj tylko L lub P');
- goto liczba;
- end;
- {wykonanie}
- shift(ldp,tab,wielkoscbazy);
- {wynik}
- if wyjscie=true then
- begin
- writeln('------Wynik-------');
- for i:=1 to wielkoscbazy do
- begin
- write(tab[i],' ');
- end;
- writeln();
- writeln('------------------');
- end
- else
- writeln('blad');
- {czy ponowic/koniec}
- kont:
- write('Czy chcesz kontynuowac? t/n');
- readln(tn);
- if ((tn='t') or (tn='T')) then
- goto start
- else
- halt;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement