Advertisement
cacodemon665

Pascal pyramid

May 1st, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.63 KB | None | 0 0
  1. type
  2.     LongNumber = record
  3.         data: array [1..100] of byte;
  4.         length: longint;
  5.     end;
  6.  
  7. var
  8.     pascal_pyramid: array [1..1000, 1..1000] of LongNumber;
  9.     n, i, j: longint;
  10.  
  11. function create(): LongNumber;
  12. var
  13.     result: LongNumber;
  14. begin
  15.     result.data[1] := 1;
  16.     result.length := 1;
  17.  
  18.     create := result;
  19. end;
  20.  
  21. procedure print(value: LongNumber);
  22. var
  23.     i: longint;
  24. begin
  25.     for i := value.length downto 1 do
  26.         write(value.data[i]);
  27. end;
  28.  
  29. function sum(a, b: LongNumber) : LongNumber;
  30. var
  31.     length, i, s: longint;
  32.     result: LongNumber;
  33. begin
  34.     if a.length > b.length then
  35.         length := a.length
  36.     else
  37.         length := b.length;
  38.  
  39.     result.length := length;
  40.  
  41.     for i := 1 to length + 1 do
  42.         result.data[i] := 0;
  43.  
  44.     for i := 1 to length do
  45.     begin
  46.         s := a.data[i] + b.data[i];
  47.  
  48.         result.data[i] := result.data[i] + s;
  49.         s := result.data[i];
  50.         result.data[i] := s mod 10;
  51.         result.data[i + 1] := s div 10;
  52.  
  53.         if (i = length) and (s > 9) then
  54.             inc(result.length);
  55.     end;
  56.  
  57.     sum := result;
  58. end;
  59.  
  60. begin
  61.     read(n);
  62.  
  63.     n := n + 1;
  64.  
  65.     for i := 1 to n do
  66.     begin
  67.         pascal_pyramid[i, 1] := create();
  68.         pascal_pyramid[i, i] := create();
  69.  
  70.         for j := 2 to i - 1 do
  71.             pascal_pyramid[i, j] :=  sum(pascal_pyramid[i - 1, j - 1],  pascal_pyramid[i - 1, j]);
  72.     end;
  73.  
  74.     for i := 1 to n do
  75.     begin
  76.         for j := 1 to i do
  77.         begin
  78.             print(pascal_pyramid[i, j]);
  79.             write(' ');
  80.         end;
  81.  
  82.         writeln;
  83.     end;
  84.  
  85. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement