| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1963 人关注过本帖
标题:在一个数组中查找鞍点
只看楼主 加入收藏
onlylove0106
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-4-23
收藏
 问题点数:0 回复次数:11 
在一个数组中查找鞍点

我的程序是:
Private Sub Command1_Click()
Cls
Dim a() As Integer, RowMax%, ColMin%, i%, j%, M%, N%
Dim Point As Integer, Col% '鞍点
Dim flag As Integer
Randomize
M = Int(Rnd * 8) + 1
N = Int(Rnd * 8) + 1
ReDim a(M, N) As Integer '重新定义改变维数和大小
'生成数组
Print Chr(13) + Chr(13); "随机生成的数组为:"; Chr(13)
For i = 0 To M '行
For j = 0 To N '列
a(i, j) = Int(Rnd * 90) + 10 '产生随机两位整数
Print a(i, j); " ";
Next j
Print
Next i
Print
'统计数组元素
For i = 0 To M
RowMax = a(i, 0) '假设每行第一列的元素为行最大
For j = 0 To N
If a(i, j) > RowMax Then RowMax = a(i, j)
Next j
Print "第" & i + 1 & "行最大的元素是:"; RowMax
Next i
Print
For j = 0 To N
ColMin = a(0, j) '假设每列第一行的元素为列最小
For i = 0 To M
If a(i, j) < ColMin Then ColMin = a(i, j)
Next i
Print "第" & j + 1 & "列最小的元素为:"; ColMin
Next j
Print
'查找鞍点
For i = 0 To M
Point = a(i, 0): Col = 0
For j = 0 To N
If Point < a(i, j) Then Point = a(i, j): Col = j
Next j
flag = 1
For j = 0 To N
If Point > a(j, Col) Then flag = 0
Next j
If flag Then
Print "第" & i + 1 & "行鞍点元素是:"; Point
Else
Print "第" & i + 1 & "行鞍点元素不存在!"
End If
Next i
End Sub
但是运行时有时候正确,有时候却有“下标越界”的错误:If Point > a(j, Col) Then!! 实在迷惑,请大家帮忙修改!

搜索更多相关主题的帖子: 鞍点 
2007-05-17 05:00
onlylove0106
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-4-23
收藏
得分:0 
对了,还有一个题偶也不会呵呵!

“一瓶汽水1元钱,两个空瓶换一瓶水。现在我有20元钱,可以喝几瓶子水?”
我算是38,可是答案不对,当然我是自己算没有用程序,因为我不会写呵呵!希望高手指点迷津!

2007-05-17 05:10
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 
39瓶 20瓶 --10瓶-- 5瓶 --2瓶+ 1空瓶 -- 1瓶+ 1空瓶 -- 1瓶

2007-05-17 09:38
onlylove0106
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-4-23
收藏
得分:0 
呵呵楼主真厉害!就是39!

2007-05-17 11:55
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 

相对 39 我更喜欢40! 我经常在联众下四国


2007-05-17 12:11
onlylove0106
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-4-23
收藏
得分:0 
老大,帮我看看“鞍点”的问题好不好?

2007-05-18 06:48
ouzhiguang
Rank: 1
来 自:湖南长沙
等 级:新手上路
威 望:1
帖 子:240
专家分:0
注 册:2007-5-18
收藏
得分:0 

你那个下标越界,主要是由于动态数组a()引起的!你不妨把该数组该成二维定长数组!
我给出程序如下:



Private Sub Command1_Click()

Dim a(0 To 9, 0 To 9) As Integer, RowMax%, ColMin%, i%, j%, M%, N%
Dim Point As Integer, Col% '鞍点
Dim flag As Boolean
Randomize
M = Int(Rnd * 9) + 1
N = Int(Rnd * 9) + 1
'重新定义改变维数和大小
'生成数组
Print Chr(13) + Chr(13); "随机生成的数组为:"; Chr(13)
For i = 0 To M '行
For j = 0 To N '列
a(i, j) = Int(Rnd * 90) + 10 '产生随机两位整数
Text1.Text = Text1.Text & a(i, j) & " "
Next j

Text1.Text = Text1.Text & Chr(13) & Chr(10)
Next i
Print
'统计数组元素
For i = 0 To M
RowMax = a(i, 0) '假设每行第一列的元素为行最大
For j = 0 To N
If a(i, j) > RowMax Then RowMax = a(i, j)
Next j
Text1.Text = Text1.Text & "第" & i + 1 & "行最大的元素是:" & RowMax & Chr(13) & Chr(10)
Next i
Print
For j = 0 To N
ColMin = a(0, j) '假设每列第一行的元素为列最小
For i = 0 To M
If a(i, j) < ColMin Then ColMin = a(i, j)
Next i
Text1.Text = Text1.Text & "第" & j + 1 & "列最小的元素为:" & ColMin & Chr(13) & Chr(10)
Next j

'查找鞍点
For i = 0 To M
Point = a(i, 0)
Col = 0
For j = 0 To N
If Point < a(i, j) Then
Point = a(i, j)
Col = j
flag = True
End If
Next j
For j = 0 To N
If Point > a(j, Col) Then flag = False
Next j
If flag Then
Text1.Text = Text1.Text & "第" & i + 1 & "行鞍点元素是:" & Point & Chr(13) & Chr(10)
Else
Text1.Text = Text1.Text & "第" & i + 1 & "行鞍点元素不存在!" & Chr(13) & Chr(10)
End If
Next i

End Sub

2007-05-19 09:26
onlylove0106
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-4-23
收藏
得分:0 
谢谢楼上的嘎嘎!

2007-05-20 09:33
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
2n-1

2*20-1=39

快上课了……
2007-05-20 09:58
lll930720
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-11-14
收藏
得分:0 
For j = 0 To N
If Point > a(j, Col) Then flag = 0
Next j

应该将 N 改为 M


2007-05-20 10:34
快速回复:在一个数组中查找鞍点
数据加载中...
 
   



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

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