| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2706 人关注过本帖
标题:求助 如何将不同文本框内的数据不重复的按大下排到一个新框内?
取消只看楼主 加入收藏
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:8 
求助 如何将不同文本框内的数据不重复的按大下排到一个新框内?
求助 如何将不同文本框内的数据不重复的按大下排到一个新框内?见图;
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 不同 文本框 数据 不重复 
2018-02-07 11:46
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
这样可以吗?
冒泡法排序(递增)
算法思想:(将相邻两个数比较,大的调到后头)
1)有n+1个数(存放在数组a(n)中),第一趟将每相邻两个数比较,大的调到后头,经n次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;
2)第二趟对余下的n个数(最大的数已“沉底”)按上法比较,经n-1次两两相邻比较后得次大的数;
3)依次类推,n+1个数共进行n趟比较。
For i=0 To n - 1
For j = 0 To n-1-i
If a(j) > a(j+1) Then
temp=a(j)
a(j)=a(j+1)
a(j+1)=temp
End if
Next j
Next i
2018-02-07 18:59
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
实例初初稿;(这样会有问题吗?)
下面的是从小到大排序的,从大到小只需改一个“>”号,看下面的注释,整个过程不变的.
Private Sub Command1_Click()
Dim x(1 To 5) As Double, i%, j%, t
x(1) = 123
x(2) = 321
x(3) = 65
x(4) = 234
x(5) = 333
For i = 1 To 5 - 1 '有5个数要排序,需要进行5-1=4次两两比较
For j = 5 To i + 1 Step -1 '从末尾一个元素到第i个元素进行两两比较
If x(j) < x(j - 1) Then '从小到大排序,若需要从大到小排序,将“”
'若次序不对,则马上交换位置
t = x(j)
x(j) = x(j - 1)
x(j - 1) = t
End If
Next j '除了内循环,一轮排序结束,最小(或最大)数已经冒到数组第一位
Next i
End Sub
2018-02-07 19:05
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
Text19 = Str$(Val(Text2) + Text6)
Text20 = Str$(Val(Text2) + Text4)
Text21 = Str$(Val(Text2) + Text25)
Text22 = Str$(Val(Text4) + Text6)
Text23 = Str$(Val(Text4) + Text25)
文字框数据按上试计算,请问可以直接将“Text19”放到程序中吗?
x(1) = 123
x(2) = 321
x(3) = 65
x(4) = 234
x(5) = 333
换成:
x(1) = Text19
x(2) = Text20
x(3) = Text21
x(4) = Text22
x(5) = Text23
如果不 行,又如何将文字框中的数据放到冒泡法的程序中呢?
希望能有个最简单的 方法。

[此贴子已经被作者于2018-2-7 19:43编辑过]

2018-02-07 19:14
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
这个程序解答可能费点精力,但还盼能解决。目前先用手工排序;一旦能自动排序了就来结帖;
图片附件: 游客没有浏览图片的权限,请 登录注册


2018-02-09 22:50
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
谢谢ZHRXJR版主的详细回复,本人希望对文本框内的数字进行排序,如下图;
将上面的Check1(I).Value直接改为Text11.SetFocus通不过
请问要如何改写?
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2018-2-14 09:53编辑过]

2018-02-14 09:51
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
SetFocus就是把当前焦点给某个对象,比如Me.SetFocus,则当前窗体或者焦点,也就是他是激活窗体,Text1.SetFocus,则Text1获得焦点,这时候输入的内容将显示在Text1中。但不知如何用在这个程序中;
将8楼的代码改了后:(没通过)
Private Sub Command1_Click()
Text1.Text = ""
K = 0
For I = 0 To 4
    If Text1(I).Text <> "" Then '原来的:If Check1(I).Value <> 0 Then
        K = K + 1
        AA(K) = Text1(I).Text  '原来的:AA(K) = Check1(I).Caption
    End If
     If Text2(I).Text <> "" Then  'If Check2(I).Value <> 0 Then
        K = K + 1
        AA(K) = Text2(I).Text  'AA(K) = Check2(I).Caption
    End If
Next I
For I = 0 To 3
    If Text3(I).Text <> "" Then    'If Check3(I).Value <> 0 Then
        K = K + 1
        AA(K) = Text3(I).Text  'AA(K) = Check3(I).Caption
    End If
    If Text4(I).Text <> "" Then   'If Check4(I).Value <> 0 Then
        K = K + 1
       AA(K) = Text4(I).Text   ' AA(K) = Check4(I).Caption
    End If
    If Text5(I).Text <> "" Then 'If Check5(I).Value <> 0 Then
        K = K + 1
        AA(K) = Text5(I).Text   'AA(K) = Check5(I).Caption
    End If
Next I
Dim SSA As String
For I = 1 To K - 1
    For J = I + 1 To K
        If AA(I) > AA(J) Then
            SSA = AA(I)
            AA(I) = AA(J)
            AA(J) = SSA
        End If
    Next J
Next I
For I = 1 To K
    If I < K Then
    Text1.Text = Text1.Text & AA(I) & " - "
    Else
    Text1.Text = Text1.Text & AA(I)
    End If
Next I
End Sub


[此贴子已经被作者于2018-2-22 13:55编辑过]

2018-02-22 13:22
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
网上找到一个办法;更直接
Private Sub Command1_Click()
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)  '将三个文本框的数值赋给3个变量
d = Val(Text4.Text)  '将四个文本框的数值赋给4个变量
e = Val(Text5.Text)  '将五 个文本框的数值赋给5个变量
If a > b Then
s = b
b = a
a = s
End If    '将a,b进行大小排列,s为中间变量,排序之后a<=b
If b > c Then
t = c
c = b
b = t
End If   '将b,c进行大小排序,t为中间变量,排序之后b<=c
If c > d Then
x = d
d = c
c = x
End If   '将b,c进行大小排序,t为中间变量,排序之后c<=d
If d > e Then
z = e
e = d
d = z
End If   '将b,c进行大小排序,t为中间变量,排序之后d<=e
Text1.Text = Str(a)
Text2.Text = Str(b)
Text3.Text = Str(c)
Text4.Text = Str(d)
Text5.Text = Str(e) '将结果输入到文本框中,文本框1,2,3,数值依次从小到大排列
End Sub
2018-02-22 14:59
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
本帖的最终方案:方框内的数据采用上面的对比法代码 +自动点击“排序”钮,实现《文本框数据自动排序》(试制中做到30个框,实际上框数应该是不受限的)
一、用上面的对比法模式排序;(仅有此法,要多次点击“排序”,才能实现从小到大的排序,加下面一条就实现“自动排序”)
二、在窗体上加上时间控制器,将属性Interval设置为“5”,再在定时器时间进程中加一条指令(见下图)
在运行中由程序加入到文本框内的数据将立即完成“从小到大的自动排序”。省去了人工点击“排序”钮。
图片附件: 游客没有浏览图片的权限,请 登录注册


2018-02-23 13:26
快速回复:求助 如何将不同文本框内的数据不重复的按大下排到一个新框内?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016886 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved