Pascal的三角输出对齐

时间:2018-03-21 18:35:22

标签: alignment output pascal pascals-triangle

所以我想出了三角形本身值的代码。我目前正在努力的是如何对打印的值进行对齐/居中。我尝试了很多东西但是,我现在可以使用一些帮助。如果有人知道如何做到这一点,请随意分享!谢谢

Program Tri_pas;
Uses Crt;
Var
    linha,ordem,a,b: byte;  


Function fat(X: byte): real; // factorial
Var fat1:  real;
Begin

  fat1:=1;  
  If X <= 1 Then  
    fat:=1
  Else
  Begin
    Repeat
      fat1:=(fat1 * X);
      X:=(X - 1);
    Until X <= 1;
    fat:=fat1;
  End;

End;



Procedure nCp(n,p: byte);  //Combinations
Var
    i: byte;
    nCp: real;
Begin

  If n < 1 Then
    n:=0  
  Else
    n:=(n-1);

  For i:=0 to n do    
  Begin
    writeln;
    For p:=0 to i do  
    Begin
      nCp:= fat(i) / (fat(p) * fat(i - p));    //  mathematic formula for the combinations      
      Write(nCp:1:0,' ');
    End;
  End;

End;


{ Main Programa  }

Begin

  Write('Insert a line(1 -> n) :  ');
  Readln(linha);
  nCp(linha,ordem);
  readln;  

End.

1 个答案:

答案 0 :(得分:0)

只需在字符串前添加适当数量的空格。请注意,我使用了双倍空格,并将占位符大小更改为4(3 + 1)以更好地进行格式化。

For p := 1 to (n - i) do
  Write('  ');

For p:=0 to i do
Begin
  nCp:= fat(i) / (fat(p) * fat(i - p));    //  mathematic formula for the combinations
  Write(nCp:3:0,' ');
End;

P.S。有更有效的方法可以在没有实数的情况下在合理范围内计算Ncr。