- ベストアンサー
数学のBasicなのですが・・。
数学のコンピューターを独学でやり始めたのですが、分からないことがたくさんあって、頼れる人がいなくて質問したのですが、 配列変数とかいうのがよく分からなくて、 DIM 変数名(n) っていうのは、番号つき変数を0からn番まで用意するということは分かりました。 ○配列変数→大量のデータを一気に出力という題目のところがありまして、 ■N個の数値を入力して、逆の順序で出力するプログラム 10 INPUT ”データ数”;N 20 DIM A(N) 30 FOR K=1 TO N 40 INPUT ”データ”;A(K) 50 NEXT K 60 FOR K=1 TO N 70 I=N+1-K 80 PRINT A(I); 90 NEXT K 100 END で まず、 10行目はデータ数って書いてあって、40行目はデータと書いてあって、その違いが分かりません。 それとFOR~NEXT文は挟まった動作を繰り返すんですよね!? で、60行目と90行目は2文挟まっているのですが、この2文とも繰り返すということなのでしょうか? 分かってる方にとってはくだらない質問と思いますが、どうか教えてください。 お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。itohhといいます。 解説すると以下のようになります。 >10 INPUT ”データ数”;N Nにキー入力された数値が入ります。 >20 DIM A(N) 上記で入力されたN分だけ配列を確保します。 >30 FOR K=1 TO N >40 INPUT ”データ”;A(K) >50 NEXT K Kを1からNまで1ずつ増やして行きます。 そして、KがNになるまで40行を実行します。 (配列AのK番目にキー入力された値を代入する) >60 FOR K=1 TO N >70 I=N+1-K >80 PRINT A(I); >90 NEXT K Kを1からNまで1ずつ増やして行きます。 そして、KがNになるまで70行と80行を実行します。 この場合、IにはNから1まで減算された値が入ります。そして、I番目の 配列Aの値をプリントします。 つまり、40行で入力された値を逆の順番にプリントすると言うことです。 ここは、もっと簡単に出来ますよ。 >60 FOR K=N TO 1 STEP -1 >80 PRINT A(K); >90 NEXT K KをNから1まで1ずつ減らして行きます。 これでも同じ結果がプリントできると思います。 100 END プログラムを終了します。 素のBASICは久々なので文法的に間違っているかもしれないところは指摘できません。 こんなところでいいでしょうか?
その他の回答 (4)
- itohh
- ベストアンサー率45% (210/459)
こんにちは。itohhといいます。 すみません、回答がbrogieさんとダブってしまいました。 アドバイスを書いている間に先を越されてしまいました。(^_^;
- brogie
- ベストアンサー率33% (131/392)
回答は、k_ebaさんが書かれていますが、蛇足ですが書かせてください。 10行目で、例えば、5と入れると、 20行目で、A(1)、A(2)、A(3)、A(4)、A(5)という入れ物が出来ます(本当はA(0)も出来ています、しかも、メモリ上に連続に出来ます)。 40行目で、Kが1のとき、A(1)に値が代入されます、 40行目で、Kが2のとき、A(2)に値が代入されます、 ・・・ 40行目で、Kが5のとき、A(5)に値が代入されます。 80 PRINT A(I);の;を削除すると、入力したデータが縦に表示されます。 また、60行以降は次のようにも書くことが出来ます。 60 FOR K=N TO 1 STEP -1 70 ' 80 PRINT A(I); 90 NEXT K STEP -1でNから1づつ減らして行きます。 では、頑張りなさい!
お礼
はい頑張ります!どうもご回答ありがとうございました。助かりました。
- zoh
- ベストアンサー率34% (273/789)
> 10行目はデータ数って書いてあって、 > 40行目はデータと書いてあって… 変数Nは「何個のデータを入力するのか」と言う意味で「データ数」と言うことです。変数A(1)~A(K)までが実際の入力されるデータです。 > …この2文とも繰り返すということなのでしょうか? 上記のプログラムではその通りです。ただし、forループ内にif文などがればそれによって実行されない文も出てきますし、goto文があればforループから抜け出します。 じゃあ、がんばって!
お礼
はい!頑張ります!温かいお言葉と、ご回答感謝です。
補足
ということは、 まず10行目で、N個のデータを入力すると言っておいて、 20行目で番号付き変数をN個用意して、 3,4,50行目からよく分からないです・・・・。 またまた質問で申し訳ないのですが、教えてください。お願いします。
- k_eba
- ベストアンサー率39% (813/2055)
10行目のデータ数は配列の数です 40行目のデータ は配列の中の数です >60行目と90行目は2文挟まっているのですが はいそうです(何行でも挟まっているの全てです) がんばって下さい。
お礼
ご回答ありがとうございます。感謝です。助かります。
お礼
めちゃ詳しいご回答ありがとうございます! おかげで助かりました。まだまだ分からないことがたくさん出てくると思うのですが、また教えてくださいね!ホントご回答ありがとうございました。