Floyd's triangle: Difference between revisions

Content added Content deleted
(→‎{{header|Pascal}}: add example)
(→‎{{header|Pascal}}: add variant with for loop)
Line 199: Line 199:
<lang pascal>Program FloydDemo (input, output);
<lang pascal>Program FloydDemo (input, output);


procedure floyd (numberOfLines: integer);
procedure floyd1 (numberOfLines: integer);
{ variant with repeat .. until loop }

var
var
i, j, digits, numbersInLine: integer;
i, j, digits, numbersInLine: integer;


begin
begin
digits := trunc(ln(numberOfLines*(numberOfLines+1))/ln(10));
digits := trunc(ln(numberOfLines*(numberOfLines+1))/ln(10)) + 1;
i := 1;
i := 1;
j := 1;
j := 1;
Line 211: Line 211:
repeat
repeat
repeat
repeat
write(i: digits+1, ' ');
write(i: digits, ' ');
inc(i);
inc(i);
inc(j);
inc(j);
Line 219: Line 219:
inc(numbersInLine);
inc(numbersInLine);
until (numbersInLine > numberOfLines);
until (numbersInLine > numberOfLines);
end;

procedure floyd2 (numberOfLines: integer);
{ Variant with for .. do loop }
var
i, j, digits, numbersInLine: integer;

begin
digits := trunc(ln(numberOfLines*(numberOfLines+1))/ln(10)) + 1;
i := 1;
for numbersInLine := 1 to numberOfLines do
begin
for j := 1 to numbersInLine do
begin
write(i: digits, ' ');
inc(i);
end;
writeln;
end;
end;
end;


begin
begin
floyd(5);
floyd1(5);
floyd(14);
floyd2(14);
end.</lang>
end.</lang>
Output:
Output: