Advertisement
ewelina_r

Zamiana systemów

Jan 14th, 2015
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.51 KB | None | 0 0
  1. program zamiana_systemow;
  2. uses crt;
  3. var
  4.   liczba: string;
  5.   liczba_dec: integer;
  6.   wynik:string;
  7.   i:integer;
  8.   potega:integer;
  9.   dlugosc:integer;
  10.   podstawa1,podstawa2:integer;
  11.  
  12. const
  13.   znaki:string='0123456789ABCDEF';
  14.  
  15. begin
  16.   //program zamienia systemy do max. podstawy 16
  17.   writeln('Podaj podstawe systemu liczby ktora chcesz zamienic');
  18.   readln(podstawa1);
  19.   writeln('Podaj podstawe systemu na ktory chcesz zamienic swoja liczbe (max. 16)');
  20.   readln(podstawa2);
  21.   writeln('Podaj liczbe (tylko cyfry i duze litery od A do F)');
  22.   readln(liczba);
  23. // pierwsza część zamienia z dowolnego systemu na system dziesiętny
  24.   potega:=1;
  25.   liczba_dec:=0;
  26.   dlugosc:=length(liczba);
  27.   i:=dlugosc;
  28.   repeat
  29.     if (integer(liczba[i])>=65) then // sytuacja kiedy w naszej wczytanej liczbie pojawiają się litery
  30.     begin
  31.       liczba_dec:=liczba_dec+(integer(liczba[i])-55)*potega;
  32.     end else // sytuacja kiedy nasza liczba składa sie tylko z liczb
  33.       liczba_dec:=liczba_dec+(integer(liczba[i])-48)*potega;
  34.     potega:=potega*podstawa1;
  35.     i:=i-1;
  36.   until i=0;
  37. // druga część zamienia z systemu dziesiętnego na dowolny
  38.    liczba:='';
  39.   repeat
  40.     liczba:=znaki[(liczba_dec mod podstawa2)+1] + liczba;  // w nawiasie kwadratowym dodajemy 1 ponieważ w stringu adres komórki 0 jest równy 1, 1 jest równy 2 itd.
  41.     liczba_dec:=liczba_dec div podstawa2; // pozbywamy się ostaniej cyfry liczby
  42.   until liczba_dec=0;
  43.   write('Liczba po zamianie wynosi:');
  44.   writeln(liczba);
  45. readkey;
  46. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement