Multiplication tables: Difference between revisions
Content added Content deleted
m (→[[Print_a_Multiplication_Table#ALGOL_68]]: - misc tidy.) |
(→Tcl: Added implementation) |
||
Line 1: | Line 1: | ||
⚫ | |||
Produce a formatted 12×12 multiplication table of the kind memorised by rote when in primary school. |
Produce a formatted 12×12 multiplication table of the kind memorised by rote when in primary school. |
||
Only print the top half triangle of products. |
Only print the top half triangle of products. |
||
⚫ | |||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |
||
<lang Algol>main:( |
<lang Algol>main:( |
||
Line 37: | Line 38: | ||
12 144 |
12 144 |
||
</pre> |
|||
=={{header|Tcl}}== |
|||
<lang tcl>puts " x\u2502 1 2 3 4 5 6 7 8 9 10 11 12" |
|||
puts \u0020\u2500\u2500\u253c[string repeat \u2500 48] |
|||
for {set i 1} {$i <= 12} {incr i} { |
|||
puts -nonewline [format "%3d" $i]\u2502[string repeat " " [expr {$i*4-4}]] |
|||
for {set j 1} {$j <= 12} {incr j} { |
|||
if {$j >= $i} { |
|||
puts -nonewline [format "%4d" [expr {$i*$j}]] |
|||
} |
|||
} |
|||
puts "" |
|||
}</lang> |
|||
Output: |
|||
<pre> |
|||
x│ 1 2 3 4 5 6 7 8 9 10 11 12 |
|||
──┼──────────────────────────────────────────────── |
|||
1│ 1 2 3 4 5 6 7 8 9 10 11 12 |
|||
2│ 4 6 8 10 12 14 16 18 20 22 24 |
|||
3│ 9 12 15 18 21 24 27 30 33 36 |
|||
4│ 16 20 24 28 32 36 40 44 48 |
|||
5│ 25 30 35 40 45 50 55 60 |
|||
6│ 36 42 48 54 60 66 72 |
|||
7│ 49 56 63 70 77 84 |
|||
8│ 64 72 80 88 96 |
|||
9│ 81 90 99 108 |
|||
10│ 100 110 120 |
|||
11│ 121 132 |
|||
12│ 144 |
|||
</pre> |
</pre> |
Revision as of 15:19, 5 December 2009
![Task](http://static.miraheze.org/rosettacodewiki/thumb/b/ba/Rcode-button-task-crushed.png/64px-Rcode-button-task-crushed.png)
You are encouraged to solve this task according to the task description, using any language you may know.
Produce a formatted 12×12 multiplication table of the kind memorised by rote when in primary school.
Only print the top half triangle of products.
ALGOL 68
<lang Algol>main:(
INT max = 12; STRING empty cell = " "; FORMAT fmt = $zz-d$;
print(" x"); FOR col TO max DO printf((fmt, col)) OD; print (new line);
FOR row TO max DO printf((fmt,row)); FOR col TO row-1 DO print(empty cell) OD; [row:max]INT product; FOR col FROM row TO max DO product[col]:=row*col OD; printf((fmt, product, $l$)) OD
)</lang> Output:
x 1 2 3 4 5 6 7 8 9 10 11 12 1 1 2 3 4 5 6 7 8 9 10 11 12 2 4 6 8 10 12 14 16 18 20 22 24 3 9 12 15 18 21 24 27 30 33 36 4 16 20 24 28 32 36 40 44 48 5 25 30 35 40 45 50 55 60 6 36 42 48 54 60 66 72 7 49 56 63 70 77 84 8 64 72 80 88 96 9 81 90 99 108 10 100 110 120 11 121 132 12 144
Tcl
<lang tcl>puts " x\u2502 1 2 3 4 5 6 7 8 9 10 11 12" puts \u0020\u2500\u2500\u253c[string repeat \u2500 48] for {set i 1} {$i <= 12} {incr i} {
puts -nonewline [format "%3d" $i]\u2502[string repeat " " [expr {$i*4-4}]] for {set j 1} {$j <= 12} {incr j} {
if {$j >= $i} { puts -nonewline [format "%4d" [expr {$i*$j}]] }
} puts ""
}</lang> Output:
x│ 1 2 3 4 5 6 7 8 9 10 11 12 ──┼──────────────────────────────────────────────── 1│ 1 2 3 4 5 6 7 8 9 10 11 12 2│ 4 6 8 10 12 14 16 18 20 22 24 3│ 9 12 15 18 21 24 27 30 33 36 4│ 16 20 24 28 32 36 40 44 48 5│ 25 30 35 40 45 50 55 60 6│ 36 42 48 54 60 66 72 7│ 49 56 63 70 77 84 8│ 64 72 80 88 96 9│ 81 90 99 108 10│ 100 110 120 11│ 121 132 12│ 144