ProjectForStudy

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 135|ตอบกลับ: 8

[ถาม/ตอบ] ลำดับคะแนนโดยการจัดลำดับที่ 1 2 3 #หาผู้รู้มาตอบ

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวานซืน 07:15
  • เช็คชื่อแล้ว: 451 วัน

    [LV.9]ConquerorII

    31

    กระทู้

    519

    โพสต์

    948

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    948
    Ticket
    276
    จิตพิสัย
    672
    สวัสดีครับ ผมอยากได้แนวทางการจัดการลำดับของคะแนนโดยมีลำดับที่ 1 2 3 ดังต่อไปนี้
    - โดยประกาศตัวแปร Array เก็บค่าคะแนน
    Dim number() As integer = {10, 5, 30, 40, 40, 20, 80}
              {.................}


    ผลลัพธ์ที่อยากได้
    [6] 80 =1
    [3] 40 = 2
    [4] 40 = 2
    [2] 30 = 3
    [5] 20 = 4
    [6] 10 = 5
    [1] 5 = 6
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวาน 09:58
  • เช็คชื่อแล้ว: 360 วัน

    [LV.8]ConquerorI

    29

    กระทู้

    737

    โพสต์

    4163

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    4163
    Ticket
    2584
    จิตพิสัย
    1579

    Merciful MemberInstructor

    puklit โพสต์ 2019-8-20 16:52:22 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2019-8-21 08:01

    ตัวอย่าง ผมเขียนขึ้นมาเพื่อให้เข้าใจการใช้งาน Generic List<T>
    และการเรียงลำดับจากมากไปหาน้อย ของ ID แล้วส่งข้อมูลขึ้นแสดงใน DataGridview


    ตัวอย่างโค้ด

    1. Public Class Form3

    2.     Public Class Employee

    3.         Public Property ID As Integer
    4.         Public Property Name As String
    5.         Public Property Last_Name As String

    6.     End Class

    7.     Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    8.         Dim L As New List(Of Employee)

    9.         L.Add(New Employee() With {.ID = 1000, .Name = "Name01", .Last_Name = "Lastname01"})
    10.         L.Add(New Employee() With {.ID = 1001, .Name = "Name02", .Last_Name = "Lastname02"})
    11.         L.Add(New Employee() With {.ID = 1002, .Name = "Name03", .Last_Name = "Lastname03"})

    12.         DataGridView1.DataSource = L.OrderByDescending(Function(emp) emp.ID).ToList()

    13.     End Sub

    14. End Class
    คัดลอกไปที่คลิปบอร์ด


    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x

    คะแนน

    จำนวนผู้เข้าร่วม 1จิตพิสัย +10 ย่อ เหตุผล
    vbpossible + 10

    ดูบันทึกคะแนน

  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวาน 09:58
  • เช็คชื่อแล้ว: 360 วัน

    [LV.8]ConquerorI

    29

    กระทู้

    737

    โพสต์

    4163

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    4163
    Ticket
    2584
    จิตพิสัย
    1579

    Merciful MemberInstructor

    puklit โพสต์ 2019-8-20 09:10:03 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2019-8-20 13:51

    ผมได้ทดลองทำ Sorting & Ranking ดังนี้ไม่รู้ว่าจะตอบโจทย์ท่านหรือไม่



    ตัวอย่างโค้ด

    1. Public Class Form2

    2.     Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    3.         Dim number() As Integer = {10, 5, 30, 40, 40, 20, 80}
    4.         Dim t = number.OrderByDescending(Function(x) x).ToList()

    5.         MessageBox.Show(Ranking(t), "Result of Ranking")

    6.     End Sub

    7.     Private Function Ranking(ListName As List(Of Integer)) As String

    8.         Dim _Rank As Integer = 1
    9.         Dim str As String = String.Empty

    10.         For n = 0 To ListName.Count - 1

    11.             If n > 0 Then

    12.                 If ListName(n) <> ListName(n - 1) Then
    13.                     _Rank += 1
    14.                     str += ListName(n).ToString() & " = " & _Rank & vbNewLine
    15.                 Else
    16.                     str += ListName(n).ToString() & " = " & _Rank & vbNewLine
    17.                 End If
    18.             Else

    19.                 str += ListName(n).ToString() & " = " & _Rank & vbNewLine

    20.             End If

    21.         Next

    22.         Return str

    23.     End Function

    24. End Class
    คัดลอกไปที่คลิปบอร์ด


    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวานซืน 07:15
  • เช็คชื่อแล้ว: 451 วัน

    [LV.9]ConquerorII

    31

    กระทู้

    519

    โพสต์

    948

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    948
    Ticket
    276
    จิตพิสัย
    672
     เจ้าของ| artxyy14 โพสต์ 2019-8-20 14:29:08 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย artxyy14 เมื่อ 2019-8-20 14:30

    ขอบคุณมากครับ คุณ: puklit   

    #ช่วยอธิบายการทำงานของ Code หน่อยได้ไหมครับ
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวาน 09:58
  • เช็คชื่อแล้ว: 360 วัน

    [LV.8]ConquerorI

    29

    กระทู้

    737

    โพสต์

    4163

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    4163
    Ticket
    2584
    จิตพิสัย
    1579

    Merciful MemberInstructor

    puklit โพสต์ 2019-8-20 15:39:48 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2019-8-20 15:57
    artxyy14 ตอบกลับเมื่อ 2019-8-20 14:29
    ขอบคุณมากครับ คุณ: puklit   

    #ช่วยอธิบายการทำงานของ Code หน่อยได้ไหมครับ

    ผมใช้วิธีดังนี้ครับ
    1. รับค่าจาก Array number() แล้วมาทำการเรียงลำดับจากมากไปหาน้อยด้วย Linq ให้ท่าน ไปอ่านเพิ่มเติมเกี่ยวกับการใช้ OrderBy หรือ OrderByDescending จากลิ้งค์นี้

    https://www.tutorialsteacher.com ... y-orderbydescending

    2. หลังจากใช้ Linq เรียงลำดับจากมากไปหาน้อยเสร็จ เก็บข้อมูลใหม่ใน Generic list (List<T>)
    ท่านสามารถอ่านเพิ่มเติมได้จากลิ้งค์นี้
    https://docs.microsoft.com/en-us ... ew=netframework-4.8

    3. หลังจากนั้นก็สร้าง Function Ranking ขึ้นมาเพื่อ Loop เช็คค่าใน Generic (List<T>)
    เพื่อเช็คจากค่าแรกจนถึงค่าสุดท้ายใน List<T> โดยใส่เงื่อนไข Ranking ดังนี้
    3.1 ถ้าเป็นค่าแรกใน List<T> ให้ Ranking = 1
    3.2 ถ้าค่าถัดไปจากค่าแรก - จนถึงค่าสุดท้าย ให้เช็คค่าย้อนหลัง 1 ค่า หากได้ค่าไม่เท่ากัน กำหนดให้ Ranking + 1 หากมีค่าเท่ากันให้ค่า Ranking ไม่ต้อง + 1 (กำหนดให้มีค่าเท่ากัน)

    เช่น ชุดข้อมูล 3,2,2,1
    การทำงานก็จะได้ดังนี้
    ค่าที่ 1 คือ 3 Ranking =1
    ค่าที่ 2 คือ 2 มันจะทำการเช็คกับค่าก่อนหน้าคือถ้ามีค่าไม่เท่ากับ 1 Ranking +=1 จะได้ Ranking = 2  แต่ถ้าค่าเท่ากัน Ranking จะไม่เพิ่มค่าที่ 3 คือ 2  มันจะทำการเช็คกับค่าก่อนหน้าคือถ้ามีค่าเท่ากับ 2 ในเมื่อ 2 ได้กำหนด Ranking ไปแล้วมันก็จะดึงค่า Ranking นั้นมาใช้ได้เลย Ranking = 2
    ค่าที่ 4 คือ 1  มันจะทำการเช็คกับค่าก่อนหน้าคือถ้ามีค่าเท่ากับ 2 ถ้ามีค่าไม่เท่ากับ 2 Ranking +=1 จะได้ Ranking = 3

    มันจะทำการเช็คลำดับแบบนี้ไปเรื่อย ๆ จนกว่าจะครบชุดข้อมูลใน List<T> ที่กำหนดไว้
    ตัวอย่างการคิดใน Excel


    นี่เป็นวิธีคิดที่ผมออกแบบไว้ก่อนเขียนเป็นโค้ดออกมาครับ
    ประเด็นหลัก ๆ คือต้องหาวิธีคิดและกระบวนการทำงานเพื่อให้ได้ผลลัพธ์ที่ต้องการให้ได้ก่อน แล้วค่อยลงมือเขียนโค้ด
    หากเริ่มลงมือเขียนโค้ดเลยโดยที่ยังไม่มีวิธีคิดและกระบวนการทำงาน ยังไงก็ไม่รู้ว่าจะเขียนโค้ดออกมาในรูปแบบไหน


    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวาน 09:58
  • เช็คชื่อแล้ว: 360 วัน

    [LV.8]ConquerorI

    29

    กระทู้

    737

    โพสต์

    4163

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    4163
    Ticket
    2584
    จิตพิสัย
    1579

    Merciful MemberInstructor

    puklit โพสต์ 2019-8-20 16:27:51 | ดูโพสต์ทั้งหมด
    artxyy14 ตอบกลับเมื่อ 2019-8-20 14:29
    ขอบคุณมากครับ คุณ: puklit   

    #ช่วยอธิบายการทำงานของ Code หน่อยได้ไหมครับ

    รอบหน้าถ้าท่านตั้งโจทย์มา ขอให้ท่าน เตรียมโค้ดหรือวิธีการคิดแก้ไขปัญหา
    ตามวิธีการของท่านมาด้วยนะครับ
    ผมจะตอบรอบนี้เพียงรอบเดียว

    ถ้าท่านถามแบบนี้ในเว็ป ThaiCreate รับรองไม่มีใครตอบ + อาจจะพ่วงโดนอบรมให้ไปปูพื้นฐานให้แน่นก่อน
    เพราะฉะนั้นท่านต้องเตรียมตัวท่านมาในระดับหนึ่งก่อนถามนะครับ
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวานซืน 07:15
  • เช็คชื่อแล้ว: 451 วัน

    [LV.9]ConquerorII

    31

    กระทู้

    519

    โพสต์

    948

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    948
    Ticket
    276
    จิตพิสัย
    672
     เจ้าของ| artxyy14 โพสต์ 2019-8-20 16:41:24 | ดูโพสต์ทั้งหมด
    ขอบคุณอีกครั้งนะครับ

    ผมจะพยายามคิดวิธีการทำงานของผลลัพธ์ก่อนที่จะเขียนโปรแกรมครับ
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวานซืน 07:15
  • เช็คชื่อแล้ว: 451 วัน

    [LV.9]ConquerorII

    31

    กระทู้

    519

    โพสต์

    948

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    948
    Ticket
    276
    จิตพิสัย
    672
     เจ้าของ| artxyy14 โพสต์ 2019-8-20 16:46:16 | ดูโพสต์ทั้งหมด
    puklit ตอบกลับเมื่อ 2019-8-20 16:27
    รอบหน้าถ้าท่านตั้งโจทย์มา ขอให้ท่าน เตรียมโค้ดหรือ ...

    OK. ครับ คุณ: puklit
  • อารมณ์วันนี้
    แฮปปี้
    เมื่อวานซืน 07:15
  • เช็คชื่อแล้ว: 451 วัน

    [LV.9]ConquerorII

    31

    กระทู้

    519

    โพสต์

    948

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    948
    Ticket
    276
    จิตพิสัย
    672
     เจ้าของ| artxyy14 โพสต์ 2019-8-20 17:00:49 | ดูโพสต์ทั้งหมด
    puklit ตอบกลับเมื่อ 2019-8-20 16:52
    ตัวอย่าง ผมเขียนขึ้นมาเพื่อให้เข้าใจการใช้งาน Generic Li ...

    ขอบคุณสำหรับการสอน  Generic List<T> ให้เข้าใจมากขึ้น  ^^

    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

    รายละเอียดเครดิต

    ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|ProjectForStudy  

    GMT+7, 2019-9-22 08:27 , Processed in 0.078886 second(s), 28 queries .

    Powered by Discuz! X3.2 R20150609, Rev.38

    © 2001-2013 Comsenz Inc.

    ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้