<配列>最小値の取得と要素の取得
いつもお世話になっております。
現在、vb.netで配列について学んでおり、読み込んだcsvファイルの最小値を取得したいと考えております。
csvファイルにはX座標,Y座標,Z座標が入っており、それぞれの最小値を取得したいです。
最小値を求めるのにmin=PD.MIN()を使用するかと思ったのですが、
自分では解決せず、検索しても良いサンプルが見つからなかったため、こちらで質問させて頂きます。
また、PD().Xpointのすべての値も取得したいのですが、こちらも同様にFor~Nextを使用しても思ったように出来ませんでした。
最終的にはX座標のすべての値をX座標の最小値で引く式を作ろうと思っています。
Xi=PD().Xpoint-MinXpoint???
お願いばかりで申し訳ありませんが教えていただけると幸いです。
よろしくお願いします
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
vb.net
1Public Class Form1 2 3 '構造体の定義 4 Public Structure PointData 5 Dim Xpoint As Double 'X座標 6 Dim Ypoint As Double 'Y座標 7 Dim Zpoint As Double 'Z座標 8 End Structure 9 10 'メンバ変数 11 Dim PD() As PointData '配列 12 Dim PDCount As Integer 'データの個数 13 Public NewPDCount As Integer '配列のサイズ 14 15 'アプリケーションの終了 16 Private Sub ExitButton_Click(sender As Object, e As EventArgs) Handles ExitButton.Click 17 Application.Exit() 18 End Sub 19 20 'ファイルを開く 21 Private Sub OpenButton_Click(sender As Object, e As EventArgs) Handles OpenButton.Click 22 With OpenFileDialog1 23 '選択ダイアログを開く 24 .Title = "点群ファイルの読み込み" 25 .FileName = "" 26 .Filter = "点群ファイル(*.csv)|*.csv|すべてのファイル(*.*)|*.*" 27 .DefaultExt = ".csv" 28 29 'ファイル名の表示 30 Dim result As DialogResult 31 result = OpenFileDialog1.ShowDialog 32 If result = Windows.Forms.DialogResult.OK Then 33 OpenFileText.Text = .FileName 34 MessageBox.Show(.FileName & "を読み込みました。", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Warning) 35 36 'ファイルの読み込み 37 Try 38 Dim ReadItems() As String 'CSVの各項目を表す配列 39 40 'ファイルを開く。 41 Dim sr As New IO.StreamReader(.FileName, System.Text.Encoding.GetEncoding("Shift-JIS")) 42 43 'ファイルの最後までループ 44 Do Until sr.Peek() = -1 45 ReDim Preserve PD(PDCount) 46 ReadItems = Split(sr.ReadLine(), ",") 47 48 PD(PDCount).Xpoint = CDbl(ReadItems(0)) 49 PD(PDCount).Ypoint = CDbl(ReadItems(1)) 50 PD(PDCount).Zpoint = CDbl(ReadItems(2)) 51 52 'データ確認用 53 Console.WriteLine(PD(PDCount).Xpoint & vbTab & PD(PDCount).Ypoint & vbTab & PD(PDCount).Zpoint) 54 PDCount += 1 55 Loop 56 57 Catch ex As Exception 58 MessageBox.Show(ex.Message) 59 End Try 60 61 Else 62 MessageBox.Show(.FileName & "の読み込みに失敗しました。", 63 My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Warning) 64 End If 65 End With 66 End Sub 67 68 '要素の数を取得 69 Private Sub CountButton_Click(sender As Object, e As EventArgs) Handles CountButton.Click 70 NewPDCount = UBound(PD) 71 MessageBox.Show(NewPDCount) 72 End Sub 73 74 '座標取得 75 Private Sub GetXpointButton_Click(sender As Object, e As EventArgs) Handles GetXpointButton.Click 76 MessageBox.Show(PD(5).Xpoint & PD(5).Ypoint & PD(5).Zpoint) 77 End Sub 78 79 ~~Private Sub GetPointButton_Click(sender As Object, e As EventArgs) Handles GetPointButton.Click 80 For i As Integer = 0 To PDCount 81 Console.Write(PD(i).Xpoint) 82 Next 83 End Sub~~ 84End Class
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/13 12:41