Advertisement
MrEfendi

kspl

Aug 25th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.97 KB | None | 0 0
  1. program project1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. uses
  6.   {$IFDEF UNIX}{$IFDEF UseCThreads}
  7.   cthreads,
  8.   {$ENDIF}{$ENDIF}
  9.   Classes
  10.   { you can add units after this };
  11.  
  12. type
  13.   Ttab=array[1..10] of integer;
  14.  
  15. var
  16.   ldp,tn:char;  {L/R}
  17.   tab:Ttab;
  18.   i,wielkoscbazy:integer;
  19.   wyjscie:boolean;  {przy wyjsciu shift ma zmienic na 1 jezeli nie bylo bledu}
  20.  
  21. procedure shift(var zmienna:char; var baza:Ttab; var liczba:integer);
  22. var
  23.   tymczas:Ttab;
  24. begin
  25.   {spr czy liczba jest w bazie jak nie wyjscie false}
  26.   for i:=1 to 10 do
  27.   begin
  28.     if baza[i]=liczba then
  29.     begin
  30.        wyjscie:=true;
  31.     end;
  32.   end;
  33.   {dzialanie}
  34.   if wyjscie=true then
  35.   begin
  36.    {w prawo}
  37.    if zmienna='P' then
  38.    begin
  39.     for i:=1 to liczba do
  40.     begin
  41.      tymczas[i+1]:=baza[i];
  42.      if i=liczba then
  43.         tymczas[1]:=tymczas[i+1];
  44.     end;
  45.  
  46.    end;
  47.    {w lewo}
  48.    if zmienna='L' then
  49.    begin
  50.  
  51.    for i:=liczba downto 1 do
  52.    begin
  53.     if i<>1 then
  54.     tymczas[i-1]:=baza[i];
  55.     if i=1 then
  56.        tymczas[liczba]:=baza[1];
  57.    end;
  58.  
  59.    end;
  60.    baza:=tymczas;
  61.   end;
  62. end;
  63.  
  64. label
  65.   start,kont,liczba;
  66.  
  67. begin
  68.   wielkoscbazy:=5;
  69. {zaladowanie bazy liczbami - nie powinny sie powtarzac}
  70.   for i:=1 to wielkoscbazy do
  71.   begin
  72.     write('Podaj liczby do bazy ', i,'/',wielkoscbazy,' ');
  73.     readln(tab[i]);
  74.   end;
  75. start:
  76. {pytanie}
  77. liczba:
  78.   write('Wybierz tryb przesuniecia [L-lewo/P-prawo]: ');
  79.   readln(ldp);
  80.   if not ((ldp='L') or  (ldp='P')) then
  81.   begin
  82.        writeln('blad! podaj tylko L lub P');
  83.        goto liczba;
  84.   end;
  85. {wykonanie}
  86.   shift(ldp,tab,wielkoscbazy);
  87. {wynik}
  88.   if wyjscie=true then
  89.   begin
  90.   writeln('------Wynik-------');
  91.   for i:=1 to wielkoscbazy do
  92.   begin
  93.     write(tab[i],' ');
  94.   end;
  95.   writeln();
  96.   writeln('------------------');
  97.   end
  98.   else
  99.   writeln('blad');
  100. {czy ponowic/koniec}
  101. kont:
  102.   write('Czy chcesz kontynuowac? t/n');
  103.   readln(tn);
  104.   if ((tn='t') or (tn='T')) then
  105.      goto start
  106.   else
  107.   halt;
  108. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement