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