dポイントプレゼントキャンペーン実施中!

結果が表示されません。間違い箇所を教えてください
使用コマンドはbwbasicです

100 PRINT "N? (N>2)"
101 waru=2
102 kazuhantei=0
103 pastwaru=0
104 kaisu=1
105 hatsu=1
110 INPUT object
120 DO
130 IF object<2 THEN
140 PRINT "N? (N>2)"
150 INPUT object
160 ELSE
170 kazuhantei=1
180 END IF
190 IF kazuhantei<>0 THEN
200 GO TO 250
210 ELSE
220 GO TO 130
230 END IF
240 LOOP
250 PRINT "soinsubunkai suruto"
260 object=0
270 DO WHILE object<>1
280 IF object MOD waru=0 THEN
290 IF pastwaru=waru THEN
300 kaisu=kaisu+1
310 END IF
320 IF kaisu>1 THEN
330 PRINT "^";kaisu
335 END IF
340 kaisu=1
350 IF hatsu=0 THEN
360 PRINT "*";waru
370 pastwaru=waru
380 END IF
390 hatsu=0
400 object=object/waru
410 END IF
420 ELSE
430 waru=waru+1
440 object=object+1
445 LOOP
450 IF kaisu>1 THEN
460 PRINT "^";kaisu
465 END IF
470 END

A 回答 (1件)

★アドバイス


・『bwbasic』ってフリーソフトですか?
 昔の N88-BASIC を思い出しますね。特に行番号があるので。
>結果が表示されません。間違い箇所を教えてください
 ↑これって全く表示されないのか?もしそうなら無限ループしていないか。
・もう一度、素因数分解のアルゴリズムを紙にでも書いて整理すべきです。
 私ならば次のようにプログラミングします。
 (1)object に数を入力する。
 (2)sosu という名前の素数を用意して 2 から順番にステップアップします。→DO WHILE などを使う。
 (3)sosu で割ったあまりが、0 以外なら sosu カウンタを +1 にします。
  このときに、PRINT sosu;"^";kazu を表示します。
 (4)object の数を sosu で割って 1 になったら処理を終了します。→ここを間違うと無限ループするよ。
 (5)(1)へ戻る。
 ↑この方法をプログラミングすればよいのです。
・間違いの箇所を探るよりも、もう一度プログラミングしなおした方が早い気がします。
 下にサンプルを載せます。

サンプル:
100 '2 以上を入力
110 DO WHILE object <= 2
120  PRINT "N? (N>2)"
130  INPUT object
140 LOOP
150 '素因数分解を開始
160 sosu = 2
170 PRINT "soinsubunkai suruto"
180 DO WHILE object <> 1
190  kazu = 0
200  WHILE (object MOD sosu)=0
210   object = object / sosu
220   kazu = kazu + 1
230  WEND
240  IF kazu>0 THEN
250   PRINT sosu;"^";kazu
260   IF object>1 THEN
270    PRINT "*"
280   END IF
290  END IF
300  sosu = sosu + 1
310 LOOP

間違い箇所:
>260 object=0
 ↑object って素因数分解する『数』ですよね。0 を代入していいの?入力した意味ないよ。
>420  ELSE
 ↑無駄な ELSE が存在する。削除すべきだ。
・サンプルを試して見て下さい。→私は試す環境を持っていないので確認して下さい。
・以上。参考に!
    • good
    • 0
この回答へのお礼

さっそくのアドバイスありがとうございます
明日学校へ行って、試してみたいと思います

お礼日時:2007/05/23 01:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!