こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Tiny Basic。。。。

今、やってるプログラムで躓いてしまっているのでどうか助けてください><

今、ファイルの書き込みのプログラムでフロッピーディスクに書き込みをするプログラムをつくってて。。
前につくったのはフロッピーにjyoho01.txtのファイルを書き込むっていうのを作って
'Example-F2.
'データファイルの書き込み
Cls
Print "フロッピディスクにデータを書き込みます。"
Print "FDを挿入して下さい。"
Print "準備ができたら、";chr$(&h22);"y";chr$(&h22);"と入力してください。"
ans$=""
While not (ans$="y" or ans$="Y")
ans$=inkey$
Wend
Open "A:\jyoho01.txt" for output as #1
For i=1 to 10
Print #1,i
Next i
Close
print "書き込みが終了しました。"
End
っていうのを作ったんです。これはちゃんとできたんです。
つまづいてるのが
フロッピーディスク内にあるX線回折結果のデータファイル(xrd01.csv)のデータ数を1/5に縮減して、新しいファイル(xrd02.csv)を作成するプログラムを作成せよ。
っていうのなんです。
とりあえず、このX線回折結果っていうのがエクセルで
15 133.333
15.02 170
15.04 170
15.06 143.333
15.08 146.667
15.1 170
15.12 173.333
15.14 200
15.16 156.667
15.18 190
15.2 180
っていうデータがあって80までの値があるんです。
先生から聞いたところ5分の一にしろというのは15と15.1の間の数値を飛ばして15 15.1といったふうにファイルの書き込みを指示すれば14行くらいで出来るって言われて自分でやってみたんですが。。
'Example-F2.
'データファイルの書き込み
Cls
Print "フロッピディスクにデータを書き込みます。"
Print "FDを挿入して下さい。"
Print "準備ができたら、";chr$(&h22);"y";chr$(&h22);"と入力してください。"
ans$=""
While not (ans$="y" or ans$="Y")
ans$=inkey$
Wend
Open "A:\xrd02.csv" for output as #1
For i=15 to 80 step 0.1
Print #1,i
Next i
Close
print "書き込みが終了しました。"
End
で実行したところ左の15 15.1っていうのはできるんですが右の値を出すことができません。 どうやったらいいんでしょう。。
長くてすみません(泣

投稿日時 - 2007-07-12 15:26:02

QNo.3161309

すぐに回答ほしいです

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

#1です。
うーん、5回に1回書き出すようにするだけですよ?
カウンターを用意して、最初0をセットします。
ループ中では、カウンターを5で割った余りが0のときだけ書き出しを行います。
ループ1回ごとにカウンタを1増やします。

こんなプログラムどこかにありませんか?

Open "xrd01.csv" for input as #1
Open "xrd02.csv" for output as #2
Count = [空欄1]
While not eof(1)
Input #1, Line$
If ((Count [空欄2] 5) = 0) Then Print #2, Line$
Count = [空欄3] + 1
Wend

空欄1・空欄2・空欄3に正しい文を入れたらプログラムになるはずです。

(ヒント)
空欄1 数値が入ります
空欄2 演算子が入ります
空欄3 変数が入ります

投稿日時 - 2007-07-12 20:37:59

お礼

うーん。。。
こういうの苦手で(・・;)
本当にわかんないんです。。
ここまでヒントだしてもらってるのに本当に申し訳ないです。。
空欄1とかは僕の頭じゃ0,iとかしか思い浮かばないんです(泣

投稿日時 - 2007-07-12 21:04:57

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

ある程度当たりがついたなら、実際に当てはめてみて動かしてみたら答えがわかりますよ。
[空欄2]はmodで正解ですが、a mod bのaとbにあたるものはすでに書いてありますよ。
[空欄3]の答えは教科書には載っていません。#2で私が書いたプログラム野中で使われている数値変数です。ひとつしかありませんので絶対わかります。

何でも聞いてばかりでは成長しませんよ。少しは試行錯誤してみてください。

投稿日時 - 2007-07-13 08:28:09

お礼

できました!!!
本当にありがとうございました!!

投稿日時 - 2007-07-13 22:17:10

ANo.3

[空欄1] 0 または 1のどちらかが正解です。
[空欄2] 剰余(あまり)を計算する演算子です。教科書を調べてください。
[空欄3] このプログラムに登場する唯一の数値変数です。Cで始まります。

投稿日時 - 2007-07-12 22:22:40

お礼

0か1なのはどうにかなると思います。
あまりのやつは a mod b が乗ってましたがここではなにをaになにをbにおくんですか?
数値変数は教科書には載ってませんでした。。

投稿日時 - 2007-07-12 23:33:42

ANo.1

うーん、設問は「フロッピーディスク内にあるX線回折結果のデータファイル(xrd01.csv)のデータ数を1/5に縮減して、新しいファイル(xrd02.csv)を作成するプログラムを作成せよ。」

なんですよね。
だったら、まずxrd01.csvを読み込みモードでオープンして、読み込んでこないとダメですよ。
今のプログラムって、読み込まずに一方的に目盛り出力してるだけですよね?

プログラム書いてしまうと勉強にならないので、ヒントだけ。
まず、xrd01.csvをオープンして、そのままxrd02.csvに書き出すプログラムはこんな感じになります。

Open "xrd01.csv" for input as #1
Open "xrd02.csv" for output as #2
While not eof(1)
Input #1, Line$
Print #2, Line$
Wend

わかりますよね?
これを、5行飛ばしでやったらいいんです。
そしたら「データ数を1/5に縮減」する結果になりますから。

投稿日時 - 2007-07-12 15:51:31

お礼

うーん。。。。 難しいです(泣
あ、あとデーターを五分の一にしたらグラフにするんで
15 133.33
15.1 133.55
みたいにならないとグラフができないんです。。。

投稿日時 - 2007-07-12 19:12:43

あなたにオススメの質問