| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1098 人关注过本帖
标题:下面是如何求6个数的第二最大值和第二最小值的代码,里面有几个变量不理介? ...
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:12 
下面是如何求6个数的第二最大值和第二最小值的代码,里面有几个变量不理介?请指教
*vfp如何求6个数的第二最大值和第二最小值
**********************

dimension  a(6)
clear
for i=1  to  6
?"请输入第"+str(i,1)+"个数:"
input  to  a(i)  &&此处的a(i)中的I 表示何意?
endfor
 for i=1  to  5
   for j=i+1  to  6   
        if  a(i)>a(j)   &&此 a(i)>a(j) 中的I与 J,又表示什么?a(j)哪里来的?
            
t=a(i)     下面if----END如何理介?
            a(i)=a(j)     
            a(j)=t   
         endif  
  endfor
 endfor

?"第二最大值是:",a(5)
?"第二最小值是:",a(2)
return
搜索更多相关主题的帖子: 如何 最大值 
2013-07-10 12:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你不知道dimension  a(6)是干嘛的么?

授人以渔,不授人以鱼。
2013-07-10 13:25
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
a(6)它表示是一维6行的数组,它整段码的运行思路是怎样?数组A()中I,J是怎么一回事?请各位指教。
一般的内存变量可用wait 再加?'变量',变量。来观察循环变化时,变量如何变化。现在是数组怎样取出循环时数组A(I)中的值如何变化?

[ 本帖最后由 sylknb 于 2013-7-10 16:01 编辑 ]
2013-07-10 15:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那是数组下标。检查数组元素的值,在循环中?出来了。

授人以渔,不授人以鱼。
2013-07-10 22:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
思路是怎样的?这个是冒泡排序算法,先对数组排序然后输出结果。但这个结果是有毛病的,问题在哪里,你自己想。

授人以渔,不授人以鱼。
2013-07-10 22:08
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
TonyDeng:
看了有关冒泡排序算法,现稍有些头绪。上面的一段代码来自:http://wenku.baidu.com/view/83f7a4b665ce05087632138a.html中采用选择升序排序
FOR i=1 TO n-1   
 FOR j=i+1  TO n   
 IF a(j)<=a(i)   
 b=a(i)   &&此处是否把a(i)的值赋于B?
 a(i)=a(j)  &&此处表示何意?
 a(j)=b   
 endif   
endfor   
ENDFOR

它算法的思路:外循环中取出a(1)分别于内循环中a(2)a(3)a(4)a(5)比大小,如果a(1)>a(2),a(3),a(4),a(5)中某1个或N个即交换位置,然后再取出a(2)与a(3)a(4)a(5)比较。依次逐一比较。但如何把它写成VFP代码还是不好理介,它的思路又如何?
1、如b=a(i)是把 a(i)的值赋于变量B?
2、a(i)=a(j)表示何意思?
3、a(j)=b 表示何意思?
请教。

[ 本帖最后由 sylknb 于 2013-7-11 10:35 编辑 ]
2013-07-11 10:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:15 
你这是不理解两个数据如何交换,自己想一想:变量A的值如何与变量B的值交换。这个功能就是上面的
程序代码:
b=a(i)        && 把a[i]的值转存到中间变量b中
a(i)=a(j)     && 把a[j]的值赋给a[i],注意这个动作把a[i]原先的值覆盖了,所以要在上面事先把a[i]的值转存起来,不然找不回来
a(j)=b        && 把原来寄存的b的值(实际上就是a[i]的值)赋给a[j]
&& 这样就把a[i]和a[j]的值交换了过来

这样的一个功能,本来应该提取成函数,命名如swap(a,b)这样的形式,swap是“交换”的英文,交换参数a、b的值,这样才不至于把功能写在具体的代码中让人百思不透,调试好了swap()函数,任何时候都可以重复使用,像原来那样写代码,可读性不佳的同时又难以重用,每次要实现类似的功能都把这段代码大同小异地写一次或用黏贴大法,是不入流的程序员代码风格,你搜索出来的也是这种,可见那些人的水平,唉~

授人以渔,不授人以鱼。
2013-07-11 15:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
求第二大或小的元素,不是求排序后数组第二个和倒数第二个元素,因为有可能是值相同的,那不是第二,而是并列第一。这就是上面解法的漏洞所在。

授人以渔,不授人以鱼。
2013-07-11 16:03
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
TonyDeng:谢谢指教。
还有一个疑问再请教一下。
(1)、冒泡排序算法它的意思是相邻二个元素比较。如3,2,1,4,6,5。先3与2比,再2与1比,接着1与4比。。。
3--2,2--1,1--4,4--6,6--5比较大小,调正位置。
(2)、那本代码中是循环嵌套
FOR i=1 TO n-1   
FOR j=i+1  TO n
一般循环嵌套机制
外循环中先拿出A(1)
进入内循环分别与A(2),A(3),A(4)。。。比较。例如:3-2,3-1,3-4,3-6,3-5
完毕后再从
外循环中又拿了A(2)进入内循环中的分别与A(1),A(4),A(6),A(5)

冒泡排序算法的机制与本代码中循环嵌套的机制好象不同?如何理介本代码中循环嵌套?

2013-07-12 09:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
冒泡排序是先用第1个元素与后面(第2个元素开始到最后)的所有元素比较,将最大(或最小)的元素置换给第1个元素,这样第1个元素就确定不变了,然后从第2个元素开始重复先前的动作——相当于把数组砍掉第1个元素再做一次同样的过程,直至结束。这个操作就是双重循环。

[ 本帖最后由 TonyDeng 于 2013-7-12 09:58 编辑 ]

授人以渔,不授人以鱼。
2013-07-12 09:55
快速回复:下面是如何求6个数的第二最大值和第二最小值的代码,里面有几个变量不 ...
数据加载中...
 
   



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

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