C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

配列の最大値の求め方

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■91743 / inTopicNo.1)  配列の最大値の求め方
  
□投稿者/ up (1回)-(2019/07/28(Sun) 11:19:49)

分類:[.NET 全般] 

https://www.adonetvb.com/Learning/MathMax.html

このページにある方法で、
一次元配列の最大値を簡単に求めることができます。
一方で、Point配列や二次元配列の場合には
この方法を使ってもエラーが出てしまいます。

こうした場合には、
普通にForループで地道に検索するしかないのでしょうか?



引用返信 編集キー/
■91744 / inTopicNo.2)  Re[1]: 配列の最大値の求め方
□投稿者/ Hongliang (847回)-(2019/07/28(Sun) 13:25:30)
2019/07/28(Sun) 13:26:03 編集(投稿者)

数値型の二次元配列であれば、以下のようにできます。
' Dim arr(2,2) As Integer
Dim maxValue As Integer = DirectCast(arr, IEnumerable(Of Integer)).Max()

Point型については、(5, 1)と(1, 5)はどっちが大きいのか普遍的な判断基準がないので、[最も大きい]を表せません。
引用返信 編集キー/
■91745 / inTopicNo.3)  Re[2]: 配列の最大値の求め方
□投稿者/ up (2回)-(2019/07/28(Sun) 17:09:02)
ありがとうございます。

Pointに関してですが
XだけYだけでそれぞれ最大値を求めることってできませんか?

引用返信 編集キー/
■91746 / inTopicNo.4)  Re[3]: 配列の最大値の求め方
□投稿者/ KOZ (11回)-(2019/07/28(Sun) 17:47:51)
No91745 (up さん) に返信
> Pointに関してですが
> XだけYだけでそれぞれ最大値を求めることってできませんか?

Dim points As Point() = New Point() {New Point(1, 2), New Point(3, 4), New Point(5, 6)}
Dim xMax As Integer = points.Max(Function(p) As Integer
Return p.X
End Function)
Dim yMax As Integer = points.Max(Function(p) As Integer
Return p.Y
End Function)

引用返信 編集キー/
■91747 / inTopicNo.5)  Re[3]: 配列の最大値の求め方
□投稿者/ Hongliang (848回)-(2019/07/28(Sun) 17:50:05)
いくつか方法はありますが、[Xが最も大きいPoint]ではなくて[単純に一番大きいX]であれば、例えば以下のようなコードを書けます。

' Dim arr() As Point
Dim xMax As Integer = arr.Max(Function(pt) pt.X)

コード中のFunction記法については、[ラムダ式 VB]で検索してみてください。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ