• ベストアンサー

整数でないとき

10 INPUT X 20 IF X=0 THEN END 30 C=X-2*INT(X/2) 40 IF C=0 THEN PRINT”偶数” ELSE PRINT”奇数” 50 GOTO 10 というプログラムはXが整数でなければ奇数と判定してしまいます。20行と30行の間に命令を追加して、Xが整数でないときは”整数でない”と表示して、次の入力を待つように修正し、整数のときだけ奇数か偶数かを判定するようにするには、 25 IF X^2>INT(X^2) THEN PRINT”整数でない”:GOTO 10 を追加する。 でよいのでしょうか? ぜひ教えてください。 

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

  • ベストアンサー
  • oja
  • ベストアンサー率29% (78/261)
回答No.4

>で分かれ目になっているのでしょうか? 分かれ目と言う表現が何を云わんとしているのかちょっとわかりかねます。 do until x=0  ~ loop は繰り返しの構造です。xが0になる(xに0が代入される)まで繰り返しを行う。 この繰り返し構造の中にIF文の構造が階層的に含まれています。 if x = int(x) then  ~ else  ~ end if の構造の下に if c=0 then print "偶数" else print "奇数" のif文の構造が含まれる形です。  どうやら、プログラムの勉強をはじめたばかりの様で仕方ないのかもしれませんが、goto文を使った書き方というのは最近あまりしません。20年ぐらい前のBASICなどでは上記のような(構造化プログラミングの)書き方が出来なく、仕方なく使われてましたが。

norvill625
質問者

お礼

学校でBASICの実習をしているのですが、先生も今はほとんど使われていないと言っていました。 N88BASICと打ち込んでスタートさせてます。 もしかして20年前のベーシックかも・・・

その他の回答 (3)

  • oja
  • ベストアンサー率29% (78/261)
回答No.3

>いいと思いますが、なぜxの自乗で判断するのですか? if x <> int(x) then ... じゃいけないの?? <>, = を使うなら、2乗の必要はないですね。 2乗にしたのは、> で判断する場合負の値も考慮したんですよね。 という事で私も少し訂正。 rem x=999は仮の初期値 x=999 do until x=0  input x  if x = int(x) then   c=x-2*int(x/2)   if c=0 then print "偶数" else print "奇数"  else   print "整数でない"  end if loop end

norvill625
質問者

お礼

上記の内容は、 input x と if x = int(x) then c=x-2*int(x/2) と if c=0 then print "偶数" else print "奇数" else print "整数でない" と end if loop で分かれ目になっているのでしょうか?

  • bikkuri
  • ベストアンサー率33% (23/68)
回答No.2

いいと思いますが、なぜxの自乗で判断するのですか? if x <> int(x) then ... じゃいけないの?? もちろん、gotoで飛ばしまくるより#1の方のように記述する方がいいです。 (そう書けないbasic/演習ならしかたないですが)

norvill625
質問者

お礼

No.1の方のお礼にも書かせていただいたのですが、loopというのが分からないんですよ。 あとif x <> int(x) then なら負の数字の場合がダメな気がします。

  • oja
  • ベストアンサー率29% (78/261)
回答No.1

よろしいのではないでしょうか。 ただ、自分なら下のような感じで書きますけど。 rem x=999は仮の初期値 x=999 do until x=0  input x  if x^2 = int(x^2) then   c=x-2*int(x/2)   if c=0 then print "偶数" else print "奇数"  else   print "整数でない"  end if loop end

norvill625
質問者

お礼

do untilやloopはまだ習っていないので分かりません・・・  申し訳ないです。

関連するQ&A