• ベストアンサー

VBスクリプト どこが間違っているのでしょうか?

こんにちは、いつもお世話になっています 今回大学のレポートで、アクセスすると九九の表を算出するプログラム(aspで)を作ることになりました。 途中まではなんとかやってみたものの行き詰ってしまいました!! どこかが間違っているのだと思うのですがどこか全くわかりません…。 以下が実際にわたしが書いている<body>内です。 <body> <% Response.write "<table border=1>" Response.write "<tr>" Response.write "<td border=1>" For i=1 to 9 For j=1 to 9 A=j*i Response.write A Response.write "</td>" Response.write "<td>" Next Response.write "</tr>" Response.write "<tr>" Next Response.write "</table>" %> </body> あ 多分段をつけてるんですが半角スペースが無視されてしまうので読みづらいと思います、すみません。 これを実行すると、 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 4 6 8 10 12 14 16 18 6 9 12 15 18 21 24 27 ・ ・ ・ のようになって 最初の2 3 4 5 …は表に入ってくれません。 その後の横に並んでいる12345…からは表になりますがどうして こうなるのかさっぱりわかりません。 全部をひとつの表に入れたいのです。 もしかして根本的な考え方が間違っているのでしょうか?? すみませんがお分かりの点がありましたら教えていただけませんでしょうか。 なんとなく、答えをそのまま書いてもらうのはずるいような気がするのでヒントだけでもかまいません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.2

こんにちゃ。 とりあえず。。。ソースをよ~く見て追っていきましょう。 まぁ、パッと見、「TRとTD」の数がそれぞれ、おかしいような気がしなくもないって思うのですがー。。。 大本は response.write("<table border =1>") response.write("<tr>") response.write("<td>") response.write("</td>") response.write("</tr>") response.write("</table>") なわけでこれをどこで繰り返すか。ですよね。 response.write("<table border =1>") ● response.write("<tr>") ○ response.write("<td>") response.write("</td>") ○ response.write("</tr>") ● response.write("</table>") ○の間を9回と●の間を9回繰り返せば、OKに思えませんか? まぁ、そこにループ処理を突っ込んでやれば。。。 とりあえず、スタートからゴールまで、どのような処理をたどっていったのかを頭の中、紙の上で考えられるようにしたほうが楽ですよ。

analogy
質問者

お礼

なるほど テーブルの方を先に書いておいて後でループを入れればいいんですね! なんだか先に書いたi=…のところにかじりついていました。 なんとかなりそうです、本当にありがとうございます しばらく考えて見ます

analogy
質問者

補足

なんだかお礼と補足が逆になってしまいました… ソースを見ながらやっていったらうまくいきました。本当にありがとうございました。もう一度、しっかり勉強しなおそうと思います。

その他の回答 (2)

  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

スクリプトではなく、HTMLに関してですが、 Response.write "<td border=1>" <td>タグにはborder属性はありませんよ。

analogy
質問者

お礼

すみません…そこはわたしがこっちにコピー&ペーストするときにごっちゃになったみたいです。本来のやつには書いてありませんでした。わざわざ、ありがとうございます。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

ロジックを追っていくと・・・・ jが9になった時を考えると i*9を出力 </td><td></tr><tr> (i+1)*1 </td><td>・・・ となり、あきらかに変ですよね。 i*9を出力 </td></tr><tr><td> (i+1)*1 </td><td>・・・ を意図したはずです。

analogy
質問者

お礼

おかげさまでうまくいきました。ありがとうございます。本当に助かりました。 正直、今回の件でぜんぜんわかっていないのを実感しました。もっと勉強します。

analogy
質問者

補足

こんな早く回答していただいてどうもありがとうございます。 なるほどそうですね!! 1の段を計算し終わってからどうなるか… 考えてみます。 あと自分はForをなぜか外側から計算しているものだと思い込んでいました。勉強不足でした

関連するQ&A