DOBON.NET DOBON.NETプログラミング掲示板過去ログ

goto文を使わない方法

環境/言語:[vostro]
分類:[.NET]

VBの先輩方にお聞きしたいのですが・・・

現在,ファイル1とファイル2を読み,
ファイル3に出力するということをしています.
ファイル1の内容は1,2,3,5,6
ファイル2の内容は0,2,3,4,5です.

do until file1.endofstreamを行った後,file1.readlineで,
ファイル1の内容を1行読み込むとしています.
次にファイル2を読み込み,
do until file2.endofstream
ファイル1と同じように,file2.readlineで読み込んでいます.

これを,if文で,
@file1>file2 then file2を1つ進める.
Afile1<file2 then file1を1つ進める.
Belse 出力

というふうにしたいのですが,Aの場合,どうしたら,file1のみをleadlineできるのかわかりませんので教えてください.

初心者なのでなるべくやさしく教えていただくとうれしいです.
よろしくお願いします.
2008/05/19(Mon) 22:46:09 編集(投稿者)

擬似コードで表現します。
(VB.NETの構文で正しくないものが含まれると思われます)
これで分からないという場合はどの部分がどのように分からないかを書いて下さい。
' --------------------------
Dim 最後に読んだfile1の値 = file1を読み込む
Dim 最後に読んだfile2の値 = file2を読み込む

Do Until fil1とfile2の両方のEndOfStreamがFalseの間ループする条件
    If 最後に読んだfile1の値 > 最後に読んだfile2の値 Then
        最後に読んだfile2の値 = file2を読み込む
    ElseIf 最後に読んだfile2の値 > 最後に読んだfile1の値 Then
        最後に読んだfile1の値 = file1を読み込む
    Else
        出力
    End If
Loop

' もしかしたら片方だけが残るかもしれないので2つループを用意した
Do Until file1のEndOfStreamがFalseの間ループする条件
   残りのfile1を読み込む(必要なら出力する)
Loop

Do Until file2のEndOfStreamがFalseの間ループする条件
    残りのfile2を読み込む(必要なら出力する)
Loop

' --------------------------
※2つの余分なループはうまくすれば1つにまとまるかもしれません。
※ファイルが空の場合はDim文でエラーになるかもしれません。
※要求次第では後からソートするというのも手かもしれません。

※※コンパイルできるコードを下さいという発言には答えかねますのでご了承下さい※※
■No22074に返信(Azuleanさんの記事)
> 2008/05/19(Mon) 22:46:09 編集(投稿者)

Azuleanさん,ありがとうございます.教えていただいた,疑似コードでさっそく挑戦していますが,
do until file1.endofstream and file2.endofstream
とすると,片方のファイルが空になったとき,エラーが出ました.
なので,and のところを or としたのですが,
最後に読んだfileの値=ファイルを読み込む
をした時に,loopで,endofstreamが発動してしまうため,最後の出力ができません.この場合,どうしたら正常にできるのでしょうか?
教えてください.
> 最後に読んだfileの値=ファイルを読み込む
> をした時に,loopで,endofstreamが発動してしまうため,最後の出力ができません.この場合,どうしたら正常にできるのでしょうか?
> 教えてください.
出力したかどうかを記憶する変数を作ると良いのではないでしょうか。

DOBON.NET | プログラミング道 | プログラミング掲示板