Advertisement
melnikovmaxim

KLENINA_Transfer_to_another_number_system

Jan 2nd, 2020
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.72 KB | None | 0 0
  1. program ss;
  2.  
  3. var
  4.    q, w, e, r, t, i, p, h, z, mn1, mn4,mn5: integer;
  5.    m1, m2, m3, m4, m7: array [1..100] of integer;
  6.    aa: char;
  7.  
  8. procedure v10(q, p, h: integer);
  9. var
  10.    i, s, d, f: integer;
  11. begin
  12.    if mn1 > 1 then
  13.    begin
  14.       m1 := m4;
  15.       p := mn4;
  16.    end;
  17.    for i := 1 to p do
  18.    begin
  19.       d := q;
  20.       if i < p - 2 then
  21.          for s := i to p - 2 do
  22.             d := d * q
  23.       else
  24.       if i < p - 1 then
  25.          d := d * q
  26.       else
  27.       if i = p then
  28.          d := 1;
  29.       d := d * m1[i];
  30.       f := f + d;
  31.       m2[h] := f;
  32.    end;
  33.    for i := 1 to p do
  34.       write(m1[i]);
  35. end;
  36.  
  37. procedure vdrugyu(q: integer);
  38. var
  39.    w1, e1, mn3, ll,iii: integer;
  40. begin
  41.    mn3 := mn3;
  42.    w1 := m2[h];
  43.    e1 := m2[h];
  44.    while w1 > 1 do
  45.    begin
  46.       aa := 'A';
  47.       mn3 := mn3 + 1;
  48.       w1 := w1 div q;
  49.       if e1 - w1 * q < 10 then
  50.       begin
  51.          m3[mn3] := e1 - w1 * q;
  52.          e1 := w1;
  53.       end;
  54.       if w1 = 1 then
  55.       begin
  56.          mn3 := mn3 + 1;
  57.          m3[mn3] := 1;
  58.       end;
  59.       if e1 - w1 * q > 9 then
  60.       begin
  61.          m7[mn3] := e1 - w1 * q;
  62.          e1 := w1;
  63.       end;
  64.    end;
  65.    writeln();
  66.    writeln();
  67.    write('Число ');
  68.    for iii:=1 to p do
  69.    write(m1[iii]);
  70.    write(' в ',mn5,' с/c переводим в ', q, ' c/c - ');
  71.    mn4 := mn3;
  72.    i := 0;
  73.    for mn3 := mn3 downto 1 do
  74.    begin
  75.       aa := 'A';
  76.       inc(i);
  77.       m4[i] := m3[mn3];
  78.       if m7[mn3] <> 0 then
  79.       begin
  80.          for ll := 11 to m7[mn3] do
  81.             inc(aa);
  82.          write(aa);
  83.          m7[mn3] := 0;
  84.       end
  85.       else
  86.          write(m3[mn3]);
  87.    end;
  88.    writeln();
  89. end;
  90.  
  91. begin
  92.    aa := 'A';
  93.    writeln('Программа перевод чисел из системы счисления N, в систему счисления N^q, каждый раз увеличиваю q на 1, пока N^q<37 (при первом переводе q=2)');
  94.    writeln();
  95.    while (q > 6) or (q < 2) do
  96.    begin
  97.       writeln('Введите основание системы счисления (не больше 6)');
  98.       readln(q);
  99.    end;
  100.    mn5:=q;
  101.    while p < 1 do
  102.    begin
  103.       writeln('Введите разрядность исходного числа');
  104.       readln(p);
  105.    end;
  106.    writeln('Введите ',p,' цифр(ы), цифра должна быть не больше ',q-1);
  107.    writeln('(Вводим цифру числа - нажимаем enter, затем повторяем это действие)');
  108.    for i := 1 to p do
  109.    begin
  110.       readln(m1[i]);
  111.       if m1[i] > q - 1 then
  112.          while m1[i] > q - 1 do
  113.          begin
  114.             writeln('Введите заново цифру, она не должно быть больше', q-1);
  115.             readln(m1[i]);
  116.          end;
  117.    end;
  118.    if q * q < 37 then
  119.    begin
  120.       z := z + 1;
  121.       w := q * q;
  122.       if q * q * q < 37 then
  123.       begin
  124.          z := z + 1;
  125.          e := q * q * q;
  126.          if q * q * q * q < 37 then
  127.          begin
  128.             z := z + 1;
  129.             r := q * q * q * q;
  130.             if q * q * q * q * q < 37 then
  131.             begin
  132.                z := z + 1;
  133.                t := q * q * q * q * q;
  134.             end
  135.             else
  136.                z := z;
  137.          end
  138.          else
  139.             z := z;
  140.       end
  141.       else
  142.          z := z;
  143.    end
  144.    else
  145.       z := 0;
  146.    for mn1 := 1 to z do
  147.    begin
  148.       h := 1;
  149.       if mn1 = 1 then
  150.       begin
  151.          v10(q, p, h);
  152.          q := w
  153.       end
  154.       else
  155.       if mn1 = 2 then
  156.          q := e
  157.       else
  158.       if mn1 = 3 then
  159.          q := r
  160.       else
  161.       if mn1 = 4 then
  162.          q := t;
  163.       vdrugyu(q);
  164.       writeln();
  165.    end;
  166. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement