Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Say I'm trying to make a simple multiplication table and used

Table[i"x"j"="i*j,{i,1,9},{j,1,9}]

I'm trying to make it so that I can get a table of equations, but Mathematica keeps simplifying it so that 1x2 = 2 becomes 4=x.

share
1  
You need some ToStrings and StringJoins thrown in to do it right. Try: Table[ToString@i <> "x" <> ToString@j <> "=" <> ToString[i j], {i, 1, 9}, {j, 1, 9}] –  rm -rf Sep 29 '12 at 23:14

5 Answers 5

up vote 10 down vote accepted

You can use ToString and StringJoin to "correct" your approach as in my comment above. Another possibility of displaying it without using strings (my preferred way) is:

Outer[HoldForm[#1 #2 ] == #1 #2 &, #, #] &@Range@9 // TableForm
share
    
Nice. I forgot about HoldForm. +1 –  Matariki Sep 29 '12 at 23:20
    
You, sir, are a lifesaver. I knew the solution was simple, but I wasn't thinking straight for a while for some reason. Again, thank you so much. –  David Sep 29 '12 at 23:23
2  
One can also use Array[] for the purpose: Array[HoldForm[#1 #2] == #1 #2 &, {9, 9}] // Grid. –  J. M. Sep 30 '12 at 1:25

StringForm[] is a very convenient function for the purpose:

Array[StringForm["`1`×`2`=`3`", #1, #2, #1 #2] &, {9, 9}] // TableForm

multiplication table

share

Row is useful for building up expressions that mix strings and non-strings without converting everything to strings:

Table[Row[{i, "×", j, "=", i*j}], {i, 1, 9}, {j, 1, 9}]

multiplication table

share

Remember to convert your numbers to strings (ToString) and to join the strings with StringJoin (<>)

For example:

Table[
 ToString@i <> "×" <> ToString@j <> "=" <> ToString[i*j], {i, 1, 
  9}, {j, 1, 9}]

(* Out:
{{"1×1=1", "1×2=2", "1×3=3", "1×4=4", "1×5=5", "1×6=6", "1×7=7", "1×8=8", "1×9=9"},
 {"2×1=2", "2×2=4", "2×3=6", "2×4=8", "2×5=10", "2×6=12", "2×7=14", "2×8=16", "2×9=18"},
 {"3×1=3", "3×2=6", "3×3=9", "3×4=12", "3×5=15", "3×6=18", "3×7=21", "3×8=24", "3×9=27"},
 {"4×1=4", "4×2=8", "4×3=12", "4×4=16", "4×5=20", "4×6=24", "4×7=28", "4×8=32", "4×9=36"},
 {"5×1=5", "5×2=10", "5×3=15", "5×4=20", "5×5=25", "5×6=30", "5×7=35", "5×8=40", "5×9=45"},
 {"6×1=6", "6×2=12", "6×3=18", "6×4=24", "6×5=30", "6×6=36", "6×7=42", "6×8=48", "6×9=54"},
 {"7×1=7", "7×2=14", "7×3=21", "7×4=28", "7×5=35", "7×6=42", "7×7=49", "7×8=56", "7×9=63"},
 {"8×1=8", "8×2=16", "8×3=24", "8×4=32", "8×5=40", "8×6=48", "8×7=56", "8×8=64", "8×9=72"},
 {"9×1=9", "9×2=18", "9×3=27", "9×4=36", "9×5=45", "9×6=54", "9×7=63", "9×8=72", "9×9=81"}}
*)
share

Here's a variant using Defer, it requires a little trickery using the replacement facilities of With, though. But, again, no strings.

Table[With[{a = i, b = j, res = i*j}, Defer[a*b = res]], {i, 1, 3}, {j, 1, 3}]
(*
{{1 1 = 1, 1 2 = 2, 1 3 = 3}, 
 {2 1 = 2, 2 2 = 4, 2 3 = 6}, 
 {3 1 = 3, 3 2 = 6, 3 3 = 9}}
*)
share

This site is currently not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .