Системы счисления


Задача1:

  подсчитать количество цифр в записи числа n в системе счисления с основанием k.


Код:


program n_in_k_sys;
uses crt;
var n, p:longint; {n-число}
    j, r, k:integer;
Begin
  clrscr;
  Write('Введите n: ');
  Readln(n);
  Write('Введите k: ');
  Readln(k);
    p:=n; {сохраняем n в p}
       while p > 0 do
         begin
         p:= p div k; {целое от деления будем дальше делить}
         inc(r); {инкремент или увеличение на 1}
         end;
       if n = 0 then r:=1;
       Write('n в системе счисления с основанием ',k,' займет ',r,' разрядов'); {вывод}
  Readln;
end.


Задача2:

  вывести представление этого числа на экран в системе k.

Описание:

  Сделаем вывод этого числа на экран. Для его представления будем брать символы из таблицы кодов ASCII(смотри функцию Chr). Эта программа написана на основе "Троичная система".


Код:


program n_in_k_sys_2;
uses crt;
const
  lim=20; {размер массива}
var n, p:longint; {n-число}
    j, r, k:integer;
    mas:array[1..lim] of integer; {массив, в котором храниться число в k-ичной записи}
Begin
  clrscr;
  Write('Введите n: ');
  Readln(n);
  Write('Введите k: ');
  Readln(k);
    p:=n; {сохраняем n в p}
       for j:= 1 to lim do {цикл по всем элементам массива}
         begin
         mas[j]:= p mod k; {остаток от деления в массив}
         p:= p div k; {целое от деления будем дальше делить}
         end;
       for j:= 1 to lim do
         if (mas[j]<>0) then r:=j; {считаем число ненулевых ячеек в массиве}
       if n= 0 then r:=1;
       Writeln('n в системе счисления с основанием ',k,' займет ',r,' разрядов'); {вывод числа}
       Write(n,' in 10 = ');
       for j:= r downto 1 do
        Write(Chr(mas[j]+48)); {выводим число, кодируя его символами таблицы ASCII}
       Write(' in ',k);
  Readln;
end.





Hosted by uCoz