プロが教える店舗&オフィスのセキュリティ対策術

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
を追加する。
でよいのでしょうか?
ぜひ教えてください。 

A 回答 (4件)

よろしいのではないでしょうか。


ただ、自分なら下のような感じで書きますけど。


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/11/06 21:09

いいと思いますが、なぜxの自乗で判断するのですか?


if x <> int(x) then ...
じゃいけないの??

もちろん、gotoで飛ばしまくるより#1の方のように記述する方がいいです。
(そう書けないbasic/演習ならしかたないですが)
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/11/06 21:13

>いいと思いますが、なぜ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
    • good
    • 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
で分かれ目になっているのでしょうか?

お礼日時:2003/11/06 21:18

>で分かれ目になっているのでしょうか?


分かれ目と言う表現が何を云わんとしているのかちょっとわかりかねます。

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などでは上記のような(構造化プログラミングの)書き方が出来なく、仕方なく使われてましたが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/11/07 00:16

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