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|improve this question
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
add comment

5 Answers

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|improve this answer
    
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
add comment

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

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

multiplication table

share|improve this answer
add comment

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|improve this answer
add comment

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|improve this answer
add comment

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|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.