VB 陣列

Home Home
引用 | 編輯 n1023520
2010-10-29 23:58
樓主
推文 x0
1.用2008的VB,寫一個可以移動Listbox選項順序的程式,其中按下上移鈕(Button1)可以把被選項上移一欄,按下下移鈕(button2)可以把被選項下移一欄。

2.要先去減掉最高分與最低分再平均才是歌者的得分,計 ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 三仙
2010-10-30 22:22
1樓
  
1.用2008的VB,寫一個可以移動Listbox選項順序的程式,其中按下上移鈕(Button1)可以把被選項上移一欄,按下下移鈕(button2)可以把被選項下移一欄。


第一題
防呆的部份沒有做
你自已加強

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    For i As Integer = 0 To 10
        ListBox1.Items.Add(i)
    Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '上移一欄
    ListBox1.SelectedIndex = ListBox1.SelectedIndex - 1
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    '下移一欄
    ListBox1.SelectedIndex = ListBox1.SelectedIndex + 1
End Sub

獻花 x0
引用 | 編輯 n1023520
2010-10-30 23:06
2樓
  
雖然程式還是有些錯誤,但還是謝謝你的幫忙

獻花 x0
引用 | 編輯 三仙
2010-10-30 23:51
3樓
  
下面是引用 n1023520 於 2010-10-30 23:06 發表的 : 到引言文
雖然程式還是有些錯誤,但還是謝謝你的幫忙


程式有錯??請問是哪裡出錯!!

獻花 x0
引用 | 編輯 n1023520
2010-10-31 00:05
4樓
  
抱歉忘記說,listbox的內容是6個人名,分別是 Peter、 Jimmy 、Thomas、Nick 、Karen、Ken
而不是0到10       謝謝

獻花 x0
引用 | 編輯 n1023520
2010-10-31 00:07
5樓
  
http://tw.knowledge.yahoo.com/question/question?qid=1610102506269

這個是我在知識家所發表的


謝謝

獻花 x0
引用 | 編輯 三仙
2010-10-31 08:22
6樓
  
下面是引用 n1023520 於 2010-10-31 00:07 發表的 : 到引言文
http://tw.knowledge.yahoo.com/question/question?qid=1610102506269

這個是我在知識家所發表的

謝謝
 
問題已經被奇摩知識自動移除了
不能再連結了

獻花 x0
引用 | 編輯 n1023520
2010-10-31 14:21
7樓
  
http://tw.knowledge.yahoo.com/question/question?qid=1306050107747


這是是一樣的題目,但不是2008版本的,你可以幫我做修改嗎?


而有ListBox的內容以設定為,6個人名分別為Peter、Jimmy、Thomas、Nick、Karen、Ken


然後這6個人名可以隨著上移或下移改變順序


拜託你幫幫我,謝謝

獻花 x0
引用 | 編輯 n1023520
2010-10-31 14:45
8樓
  
我的第一題已經有獲得解決,可以教我第二題怎麼寫程式嗎?

拜託~謝謝!!

獻花 x0
引用 | 編輯 ebolaman
2010-10-31 17:38
9樓
  
我提供一種方法:

用氣泡排序法,將一陣列的值 依序挑出兩個來比較大小

例如從左邊大 排到  右邊小:   {67, 98, 80}  先比較 No. 1 & 2 ,我們要前面的數值都大於後面的

但是 67 > 98 這樣不對,所以就把兩個數值交換,然後變成  {98, 67, 80}

檢查 No. 1 & 2  OK,但 67 > 80   又錯了,所以再交換

最後變成  {98, 80, 67}  就這樣 98 像是氣泡一般浮到左邊去






所以呢,先排完六個人的各別成績後,將 Index 0 與最後一個 忽略不計
For i = 1 To Count - 2  這樣
將中間剩餘的數值加起來除以 (Count - 2)  就是每個人的平均

最後同樣動作,排序六個人的平均成績,再用 For Next 一一顯示出來即可  表情


很像是  先橫向排序,再來縱向排序

如果能用一個 程序來做  包括兩個 陣列排序的動作,程式碼可以減半哦

獻花 x0
引用 | 編輯 n1023520
2010-10-31 18:51
10樓
  
因為我對寫程式的慨念還不是很聊解,
所以你說的方是我看不懂,
是否可以跟我說關於第二題的程式碼怎麼寫,

還有是用主控制台寫程式還是用應用程式寫程式

拜託各位的幫忙,

謝謝各位VB大師的解答

獻花 x0
引用 | 編輯 n1023520
2010-10-31 19:13
11樓
  
因為我對於寫VB的程式,


還不是很清楚,


可以說是一竅不通,


所以第二題說的解題方法我不了解,


是否可以跟我說關於第二題的程式怎麼寫啊!


還有第二題的程式是要寫在應用程式還是主控台應用程式?


拜託各位大師幫幫我,


並且謝謝過位大師的幫忙。

獻花 x0
引用 | 編輯 三仙
2010-11-01 11:39
12樓
  
下面是引用 ebolaman 於 2010-10-31 17:38 發表的 : 到引言文
我提供一種方法:
用氣泡排序法,將一陣列的值 依序挑出兩個來比較大小
例如從左邊大 排到  右邊小:   {67, 98, 80}  先比較 No. 1 & 2 ,我們要前面的數值都大於後面的
但是 67 > 98 這樣不對,所以就把兩個數值交換,然後變成  {98, 67, 80}
檢查 No. 1 & 2  OK,但 67 > 80   又錯了,所以再交換
最後變成  {98, 80, 67}  就這樣 98 像是氣泡一般浮到左邊去
[attachment=705731]
所以呢,先排完六個人的各別成績後,將 Index 0 與最後一個 忽略不計
For i = 1 To Count - 2  這樣
將中間剩餘的數值加起來除以 (Count - 2)  就是每個人的平均
最後同樣動作,排序六個人的平均成績,再用 For Next 一一顯示出來即可  表情
很像是  先橫向排序,再來縱向排序
如果能用一個 程序來做  包括兩個 陣列排序的動作,程式碼可以減半哦


關於排序,提供大家多一點的訊息  演算法

獻花 x1
引用 | 編輯 n1023520
2010-11-02 22:49
13樓
  
還是看不懂意思

能不能直接跟我說程式碼怎麼寫,

還有程式碼是要寫在應用程式 或   主控台應用程式


拜託各位VB大師幫幫忙,

因為必須在這個禮拜五前完成繳交,

在此先謝謝各位的幫忙

獻花 x0
引用 | 編輯 ebolaman
2010-11-04 18:02
14樓
  
參考~ http://tw.knowledge.yahoo.com/question/question?qid=1609072301487

VB2008 有這些型態,可以直接排序

我比較崇尚的是 作一個 class 來排序,主程式碼會很簡潔

獻花 x0
引用 | 編輯 三仙
2010-11-04 18:54
15樓
  
下面是引用 ebolaman 於 2010-11-04 18:02 發表的 : 到引言文
參考~ http://tw.knowledge.yahoo.com/question/question?qid=1609072301487
VB2008 有這些型態,可以直接排序
我比較崇尚的是 作一個 class 來排序,主程式碼會很簡潔


我覺得學校老師出這種作業
應該會指定客製排序
而不會讓學生套用任何語法

ps.這位發帖的樓主
建議你問一下老師
題 2 二維陣列的宣告
好像不是那樣

獻花 x0
引用 | 編輯 taiwanplope
2010-11-04 19:21
16樓
  
Public Class Form1

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim 姓名() = {"吳國民", "李得勝", "蔡可申", "陳夢嬌", "方十全"}
    Dim 評分(,) = {{77, 78, 78, 84, 84, 79, 77, 76, 76, 81}, _
                {89, 89, 92, 88, 91, 87, 86, 90, 85, 89}, _
                {89, 82, 87, 83, 82, 89, 86, 86, 84, 80}, _
                {86, 86, 90, 89, 81, 86, 90, 85, 87, 86}, _
                {89, 88, 87, 88, 86, 84, 86, 93, 84, 87}}

    Dim maxidx As Integer = UBound(姓名), maxidx2 As Integer
    Dim 平均(maxidx), minv, maxv As Double

    For i = 0 To maxidx
        minv = 評分(i, 0)
        maxv = 評分(i, 0)
        maxidx2 = UBound(評分, 2)

        For j = 0 To maxidx2
          If minv > 評分(i, j) Then minv = 評分(i, j)
          If maxv < 評分(i, j) Then maxv = 評分(i, j)
          平均(i) += 評分(i, j)
        Next

        平均(i) = Math.Round((平均(i) - minv - maxv) / (maxidx2 - 1), 2)
    Next

    Array.Sort(平均, 姓名)

    Dim m As String = ""
    For i = maxidx To 0 Step -1
        m &= (maxidx - i + 1) & ": " & 姓名(i) & " " & 平均(i) & vbCrLf
    Next
    MsgBox(m)
    End
  End Sub
End Class




程式碼送上
PS. 三仙 幫我解 =   .   = 外面那個猜數字 !!!!!!

獻花 x0
引用 | 編輯 ebolaman
2010-11-04 20:36
17樓
  
下面是引用 taiwanplope 於 2010-11-04 19:21 發表的 : 到引言文
Public Class Form1
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Dim 姓名() = {"吳國民", "李得勝", "蔡可申", "陳夢嬌", "方十全"}
      Dim 評分(,) = {{77, 78, 78, 84, 84, 79, 77, 76, 76, 81}, _
                {89, 89, 92, 88, 91, 87, 86, 90, 85, 89}, _
.......

太厲害了~

原來根本不用排序,只要把最大與最小 殺掉 就能得知道平均了..

獻花 x0
引用 | 編輯 n1023520
2010-11-04 21:00
18樓
  
謝謝各位VB大師的幫忙,表情



我才能夠準時的繳交作業表情



謝謝各位表情

獻花 x0
引用 | 編輯 n1023520
2010-11-04 21:08
19樓
  
 




特別  感謝  第16樓  你所提供的程式碼  表情


獻花 x0
引用 | 編輯 taiwanplope
2010-11-04 21:27
20樓
  
免客氣 我的猜數字 沒人幫我解決 wow !!!!!!!摳連

獻花 x0
引用 | 編輯 taiwanplope
2010-11-04 21:28
21樓
  
我不是大師= =+ 我只是個大2生 哈哈哈

獻花 x0