Update
[less_retarded_wiki.git] / pascal.md
blob215e65d5fd457c19edc81d22bb50a74abfe875fa
1 # Pascal
3 TODO
5 Here is our standardized divisor tree program in Pascal:
7 ```
8 program divisorTree;
9 uses crt;
11 { recursive function, prints divisor tree of x }
12 procedure printDivisorTree(x: integer);
13 var
14   a: integer;
15   b: integer;
16   i: integer;
17 begin
18   a := -1;
19   b := -1;
21   for i := 2 to x div 2 do { find two closest divisors }
22   begin
23     if x mod i = 0 then
24     begin
25       a := i;
26       b := x div i;
28       if b <= a then
29         break;
30     end;
31   end;
33   write('(');
35   if a > 1 then
36   begin
37     printDivisorTree(a);
38     write(' ',x,' ');
39     printDivisorTree(b);
40   end
41   else
42     write(x);
44   write(')');
45 end;
47 var
48   number: integer;
49   code: integer;
50   userInput: string[16];
52 begin
53   while true do { main loop, read numbers from the user }
54   begin
55     readLn(userInput);
56     val(userInput,number,code);
58     if code <> 1 then
59     begin
60       printDivisorTree(number);
61       writeLn('');
62     end
63     else
64       break;
65   end;
66 end.
67 ```