プロが教えるわが家の防犯対策術!

はじめまして
VB6.0で作業しています。

今プログラムを作成中なのですが、
データが次のように並んでいて、

74 61 61 61 61 61 61 61 51 58 58 29 16 21
74 61 61 61 61 61 61 61 51 57 56 15 14 18
74 61 61 61 61 61 61 61 51 56 19 14 14 19
74 61 61 61 61 61 61 61 51 34 13 13 13 17
74 61 61 61 61 61 41 14 14 19 19 19 19 24
74 61 61 61 61 61 49 15 15 19 19 19 20 24
74 61 61 61 61 61 51 14 14 19 19 19 20 24

と並んでいて、それぞれ1行ずつ30以下の数字をカウントしてそれぞれ書きだしていきたいのですが
どうしたらいいのでしょうか???
(たとえば、今の場合だと1行目は3
            2行目は3
            3行目は4となるように)

誰かよろしくお願いします。

A 回答 (4件)

こんにちは



質問を見てしまったので、つい書きこんでしまいました。
このプログラムを作成する意図は何なのでしょうか?

どうしてこんな質問をしているのか意図がわかりません。

プログラムの知らない人が仕事に必要なので質問したようにも思えないですし、

プログラムの勉強の為の質問にしては、簡単すぎます。
教科書を見直した方がいいと思います。

このプログラムが自分で書けないとしたら、回答を見ても分からないことはありませんか。

一番、気になるのはこのデータはどうゆう形で受け取るのでしょうか。
例えば、このデータがテキストファイルに有って読み込むとしたらその処理を作るのが一番大変な所になります。

既にデータが読み込まれているとしたら。どうゆう変数にデータが入っていますか?

自分の勝手な想像で失礼な事を言っていたらすみません。
    • good
    • 0

プログラム作成の意図はともかくとして...。


(意図は、ご本人の都合ですので)
 
単純に考えれば、読み込んだ数字の表を二次元
の配列の格納して、ループしながら比較し、見
つけた位置を別の配列に書き出す。
という処理を行いたいわけですよね?
 
こういう処理を「効率良く行うには?」という
事でしょうか。
バイナリソートのロジックを応用して、単純に
ループするよりは高速化できると思いますが...。
    • good
    • 0

こんにちは


入力と出力の形式がわからないですが、作ってみました。
空白で区切られた行の分割でしたら、VB6ならSplitが使えます。
空白文字で分割して配列に入れます。
行単位の読込み部分?は、自分で頑張ってください。
出力はリストボックスへの表示にしてみました。
では!
'----------------------------------------
'フォームにList1リストボックスと、Command1ボタンを配置してください!
'
Private Sub splitGyo(ByVal zZ1 As String, ByVal nLi As Long)
'■ 1行をばらして、30以下の数値をカウントしてリストボックスに出力する

Dim zZ2() As String
Dim nN1 As Integer
Dim nN2 As Integer

'空白で区切ったデータを配列に入れる
zZ2() = Split(zZ1, " ")

nN2 = 0 'カウンタ
For nN1 = 0 To UBound(zZ2) '配列の終わりまで
If IsNumeric(zZ2(nN1)) Then
'数値なら
If CSng(zZ2(nN1)) <= 30 Then
'30以下ならカウントアップする
nN2 = nN2 + 1
End If
End If
Next

'リストボックスに書き出す
List1.AddItem nLi & " 行目 : " & nN2 & " 個 "

End Sub

'----------------------------
Private Sub Command1_Click()
'■ 行を設定して呼び出す
' ファイルだったら Line Input で1行ずつ読み込むように!
Dim zGyo As String
Dim nLine As Long

'例
nLine = 3 '何行目か(行カウンタにする)
zGyo = "74 61 61 61 61 61 61 61 51 56 19 14 14 19" 'データ
’「行のデータ」と、「何行目か」を渡す
Call splitGyo(zGyo, nLine)

End Sub
'---------------------------------
以上
    • good
    • 0

データをSplit()で分割してしまえば簡単ですよ。



Sub test()
  Dim strData As String 'ここにデータを入れて
  Dim strDivided() As String '分割後のデータをここに書き出す。
  Dim i As Long
  Dim Ct As Long 'カウンタ
  
  strData = "74 61 61 61 61 61 61 61 51 58 58 29 16 21"
  strDivided = Split(strData, " ")
  Ct = 0
  For i = 0 To UBound(strDivided)
    If Val(strDivided(i)) <= 30 Then
      Ct = Ct + 1
    End If
  Next i
  MsgBox "30以下は" & Ct & "個。"
End Sub
    • good
    • 0

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