واضح آرشیو وب فارسی:سایت ریسک: دستوری برای مرتب کردن در Vb Majid 3D 06 ارديبهشت 1387, 13:20با سلام. آیا وی بی دستوری برای مرتب کردن داده ها به صورت تعریف شده ای داره ؟ مثلا بین 3 تا عدد میخوایم بزرگترینش رو نشون بده ، خوب برای این کار میتونیم خودمون به راحتی یه برنامه بنویسیم ولی اگه این اعداد صد تا باشه چی ؟ فکر کنم دستوری داشته باشه. the_king 06 ارديبهشت 1387, 14:11دستور از قبل تعریف شده ای وجود نداره. اگر هدف شما پیدا کردن مقدار ماکزیمم بین چند مقدار (عددی یا رشته string) است از این تابع استفاده کنید : Public Function Maximum(ParamArray Values() As Variant) As Variant Dim Index As Long Maximum = Values(0) For Index = 1 To UBound(Values) If Values(Index) > Maximum Then Maximum = Values(Index) Next End Function مثلا برای پیدا کردن مقدار ماکزیمم بین سه عدد اعشاری 0.3 و سینوس عدد 1 و لگاریتم عدد 2 : MsgBox Maximum(0.3, Sin(1), Log(2)) و برای پیدا کردن مقدار ماکزیمم بین چهار متغیر A و B و C و D : MsgBox Maximum(A, B, C, D) ولی اگر متغیرهای شما درون یک آرایه قرار دارند از این تابع استفاده کنید : Public Function MaximumArray(ByRef Values As Variant) As Variant Dim Index As Long MaximumArray = Values(LBound(Values)) For Index = LBound(Values) + 1 To UBound(Values) If Values(Index) > MaximumArray Then MaximumArray = Values(Index) Next End Function مثلا برای پیدا کردن مقدار ماکزیمم در آرایه 100 عنصری List : Dim List(1 To 100) As Long MsgBox MaximumArray(List) the_king 06 ارديبهشت 1387, 14:20برای مرتب کردن یک آرایه با الگوریتم مرتب سازی سریع Quick Sort از این روتین استفاده کنید : Public Sub QuickSort(ByRef List As Variant, ByVal First As Long, ByVal Last As Long) Dim LeftIndex As Long, RightIndex As Long, BaseItem As Variant, TempItem As Variant If Last > First Then LeftIndex = First RightIndex = Last + 1 BaseItem = List(First) Do Do LeftIndex = LeftIndex + 1 Loop While List(LeftIndex) < BaseItem And LeftIndex < Last Do RightIndex = RightIndex - 1 Loop While List(RightIndex) > BaseItem And RightIndex > First If LeftIndex < RightIndex Then TempItem = List(LeftIndex) List(LeftIndex) = List(RightIndex) List(RightIndex) = TempItem Else Exit Do End If Loop TempItem = List(First) List(First) = List(RightIndex) List(RightIndex) = TempItem QuickSort List, First, RightIndex - 1 QuickSort List, RightIndex + 1, Last End If End Sub این روتین سه پارامتر دارد، اولی نام آرایه است (نوع داده ای آرایه اهمیتی ندارد) دومین و سومین پارامتر این روتین اندیس اولین عضو و آخرین عضو آرایه هستند. مثلا برای مرتب کردن آرایه 100 عضوی List که از اندیس 1001 تا 1100 ادامه دارد می نویسیم : Dim List(1001 To 1100) As Double QuickSort List, 1001, 1100 seyedvahid 67 06 بهمن 1387, 00:24با سلام من یه برنامه میخوام که مثلا 3 عدد را دریافت کند و میانگینش(معدل) را به دست بیاورد و نتایج معدل رو به صورت مرتب در لیست باکس چاپ نمایید. فکر کنم باید درش از آرایه استفاده شود فقط سریع بهم جواب بدید منتظرم البته به زبان vb 6 دوستان من منتظرم فقط سریع بهم جواب بدید
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 566]