如何获得方程式的特定代码
How to get a certain code for an equation
我是初学者,在 Visual Studio 2019 年使用 Visual Basic 开发我的第一个应用程序。
我要计算这个:
我在(列表视图)和(文本框)中都有 Wi。
我在(列表视图)中拥有所有 Hi。
我的问题是如何将 wi 列表视图(或 Wi 文本框)乘以 h i 列表视图并在第三个列表视图中得到这个结果 ?
我预计您发现的最大问题是从 ListView 中获取数据 - 请注意,使用控件存储数据通常不是一个好主意。
请注意,VB.NET(以及 C# 和许多其他计算机语言)中的数组索引从零开始(即它们是偏移量,而不是数学中使用的索引)。
一旦你有了数组中的数据,就很容易进行计算。为方法和变量起一个有意义的名字也是一个问题。
有了名为 ListViewW、ListViewH 和 ListViewF 的 ListView,我想到了这个:
Public Class Form1
Dim rand As New Random()
Function Fvalues(Fb As Double, weights As Double(), values As Double()) As Double()
If weights.Length <> values.Length Then
Throw New ArgumentException("Number of weights does not equal number of values.")
End If
'TODO: Possibly more argument checking.
Dim total = 0.0
For i = 0 To weights.Length - 1
total += weights(i) * values(i)
Next
'TODO: Check for total = 0.
Dim F(weights.Length - 1) As Double
For i = 0 To weights.Length - 1
F(i) = Fb * weights(i) * values(i) / total
Next
Return F
End Function
Function ListViewToDoubles(lv As ListView) As Double()
Dim d As New List(Of Double)
For i = 0 To lv.Items.Count - 1
Dim dbl As Double
If Double.TryParse(lv.Items(i).Text, dbl) Then
d.Add(dbl)
End If
Next
Return d.ToArray()
End Function
Sub CreateSampleData()
For i = 1 To 5
ListViewW.Items.Add(rand.NextDouble().ToString())
ListViewH.Items.Add(rand.Next(0, 11).ToString())
Next
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
CreateSampleData()
Dim weights = ListViewToDoubles(ListViewW)
Dim values = ListViewToDoubles(ListViewH)
Dim f = Fvalues(0.5, weights, values)
For Each x In f
ListViewF.Items.Add(x.ToString())
Next
End Sub
End Class
我是初学者,在 Visual Studio 2019 年使用 Visual Basic 开发我的第一个应用程序。
我要计算这个:
我在(列表视图)和(文本框)中都有 Wi。
我在(列表视图)中拥有所有 Hi。
我的问题是如何将 wi 列表视图(或 Wi 文本框)乘以 h i 列表视图并在第三个列表视图中得到这个结果 ?
我预计您发现的最大问题是从 ListView 中获取数据 - 请注意,使用控件存储数据通常不是一个好主意。
请注意,VB.NET(以及 C# 和许多其他计算机语言)中的数组索引从零开始(即它们是偏移量,而不是数学中使用的索引)。
一旦你有了数组中的数据,就很容易进行计算。为方法和变量起一个有意义的名字也是一个问题。
有了名为 ListViewW、ListViewH 和 ListViewF 的 ListView,我想到了这个:
Public Class Form1
Dim rand As New Random()
Function Fvalues(Fb As Double, weights As Double(), values As Double()) As Double()
If weights.Length <> values.Length Then
Throw New ArgumentException("Number of weights does not equal number of values.")
End If
'TODO: Possibly more argument checking.
Dim total = 0.0
For i = 0 To weights.Length - 1
total += weights(i) * values(i)
Next
'TODO: Check for total = 0.
Dim F(weights.Length - 1) As Double
For i = 0 To weights.Length - 1
F(i) = Fb * weights(i) * values(i) / total
Next
Return F
End Function
Function ListViewToDoubles(lv As ListView) As Double()
Dim d As New List(Of Double)
For i = 0 To lv.Items.Count - 1
Dim dbl As Double
If Double.TryParse(lv.Items(i).Text, dbl) Then
d.Add(dbl)
End If
Next
Return d.ToArray()
End Function
Sub CreateSampleData()
For i = 1 To 5
ListViewW.Items.Add(rand.NextDouble().ToString())
ListViewH.Items.Add(rand.Next(0, 11).ToString())
Next
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
CreateSampleData()
Dim weights = ListViewToDoubles(ListViewW)
Dim values = ListViewToDoubles(ListViewH)
Dim f = Fvalues(0.5, weights, values)
For Each x In f
ListViewF.Items.Add(x.ToString())
Next
End Sub
End Class