tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル数値処理
記事No13938
投稿日: 2009/08/10(Mon) 23:15
投稿者ほうまつ
お初です。ほうまつといいます。
早速ですが、助けていただきたく、この掲示板を訪れました。

たとえば以下の数値表があったとします。
------------
0.010.020.03
0.020.040.06
0.030.060.09
0.040.080.12
------------

このよくわからない数値表は、列において、0.01 0.02 0.03 と読むのですが、自分のつたないプログラムではなんとか、0.01 0.02 0.03と読み込ませることはでき(midを用いて範囲指定)、それらのみに関する四則演算はなんとかできるようになりました。横一列の各数値の読み込みおよび四則演算はできる状態です。

ここで質問なのですが、縦1行目を9倍(0.01*9 0.02*9 …)、縦2行目を6倍(0.02*6 0.04*6)縦3行目はそのままといった処理(かける値は何でもいいのですが)をさせていき、適当なファイルに計算後の結果を載せるにはどういったプログラムを考えればいいでしょうか?

〜〜具体的にはこんな感じ〜〜〜
file1.txt    →   file2.txt
------------      ------------
0.010.020.03      0.090.120.03
0.020.040.06  →  0.180.240.06
0.030.060.09      0.270.360.09
0.040.080.12      0.360.480.12
------------      ------------
↑ ↑ ↑
*9  *6  そのまま

文字列範囲を指定し、置換する方法(たとえば、0.010.020.03の中で、1〜4文字目の0.01を、0.09へ置換する方法)も考えたのですが、行が関係してくるとなかなかうまくいきません。

動作環境は OS:Windows vista Home Premium 使用ソフト:VB ver6.0

どのような方法でもいいので、皆様のお力をお貸しください。お願いします。

[ツリー表示へ]
タイトルRe: 数値処理
記事No13939
投稿日: 2009/08/11(Tue) 00:00
投稿者しんご
2次配列を用いたらどうでしょうか?

Dim Data(1 to 5, 0 to 3) as String
Dim i   As Integer
Dim j   As Integer

@テキストファイルを読込んで、Data(i, 0) に各行のデータを一時保存する
AData(i, 1) 〜 Data(i, 3) に各列の値を入れる

For i = 1 to 5
  For j = 1 to 3
    Data(i, j) = Mid$(Data(i, 0), (4 * j - 3), 4)
  Next
Next

B各列に対して指定値をかける

For i = 1 to 5
  For j = 1 to 3
    Select Case j
      Case 1: Data(i,j) = CStr(Val(Data(i,j)) * 9)  ' 9倍する
      Case 2: Data(i,j) = CStr(Val(Data(i,j)) * 6)  ' 6倍する
      Case 3: ' そのままなので、何もしない
   End Select
  Next
Next

CData(i, 0) にテキストファイルに書込むデータを一時保存する

For i = 1 to 5
  Data(i, 0) = Data(i, 1) & Data(i, 2) & Data(i, 3)
Next

DData(i, 0) をテキストファイルに保存する


ざっとこんな感じでしょうか?
Dの書込みは、読込みができているということなので
 その逆をすればよいです。Write か Print を使うのがいいのかな。

掲示板投稿画面で書いただけで、実際に走らせてチェックしてません。
手抜きですみません、、

以上

[ツリー表示へ]
タイトルRe^2: 数値処理
記事No13940
投稿日: 2009/08/11(Tue) 01:09
投稿者ほうまつ
返信ありがとうございます。それにしてもはえぇ(´・ω・`)

二次元のデータ(i,j)とおき記録。読み込んだデータにおけるiを変化させ、jを固定させる。

  |i 1  2  3
-----------
j|
1|  a  b  c
2|  d  e  f
3|  g  h  i

jの値に応じて、それぞれの処理を対応させていく

といった(自分の勝手な解釈)ところでしょうか。
自分超初心者(専門でやってきたわけでもなく専門でやっていない先生からのたった5時間の指導のみ)なもので、右往左往していたところでした。
こんなおそくにありがとうございました。試してみます。

[ツリー表示へ]