Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.27 KB | None | 0 0
  1. var
  2.   fn, n, l, i, r, m: LongInt;
  3.   f, g: array of byte;
  4.   c, expr: string;
  5.  
  6. begin
  7.   write('Введите номер функции: ');
  8.   readln(fn);
  9.   if fn <= 1 then
  10.     n := 1
  11.   else
  12.     n := Ceil(Log2(Log2(fn + 1)));
  13.   l := trunc(power(2, n));
  14.   SetLength(f, l);
  15.   SetLength(g, l);
  16.   for i := 0 to l - 1 do
  17.   begin
  18.     r := trunc(power(2, l - 1 - i));
  19.     if (fn - r) >= 0 then begin
  20.       fn := fn - r;
  21.       f[i] := 1;
  22.       g[i] := 1;
  23.     end;
  24.   end;
  25.   for m := 0 to l - 1 do
  26.   begin
  27.     write(' ' * m);
  28.     if m <> 0 then
  29.       for i := l - 1 downto m do
  30.         g[i] := (g[i] + g[i - 1]) mod 2;
  31.     for i := m to l - 1 do write(g[i], ' ');
  32.     writeln();
  33.   end;
  34.   for i := 1 to n do
  35.   begin
  36.     write(('x' + i):4);
  37.   end;
  38.   writeln('f':4, 'g ':5, 'c');
  39.   for i := 0 to l - 1 do
  40.   begin
  41.     if i = 0 then c := '1' else c := '';
  42.     for m := 1 to n do
  43.     begin
  44.       r := (i div trunc(power(2, n - m))) mod 2;
  45.       write(r:4);
  46.       if r = 1 then begin
  47.         if c.Length > 0 then c:=c+chr(8896);
  48.         c := c + 'x' + m;
  49.       end;
  50.     end;
  51.     if g[i] = 1 then
  52.       if (expr.Length > 0) and (c.Length > 0)
  53.         then expr := expr + ' ' + chr(8853) + ' ' + c
  54.       else expr := c;
  55.     writeln(f[i]:4, g[i]:4, ' ', c);
  56.   end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement