主题:求助: 随机产生50个两位数存入一个数组中,现要求将此数组复制到另一个数组
彩云飞扬
[专家分:0] 发布于 2006-10-24 16:56:00
求助: 随机产生50个两位数存入一个数组中,现要求将此数组复制到另一个数组
中,如果原数组中存在相同的数据,只复制一个数据,其他相同的数据被
舍弃,显示新数组。
回复列表 (共3个回复)
沙发
moz [专家分:37620] 发布于 2006-10-24 19:09:00
我DOS里有内存虚拟的文件系统,所以速度比较快.
def seg=varseg(a(1))
bsave "123.txt",varptr(a(1)),len(a(1))*ubound(a)
def seg=varseg(b(1))
bload "123.txt",varptr(b(1))
def seg
板凳
mickeyice [专家分:200] 发布于 2006-10-25 00:06:00
随机产生50个两位数存入一个数组中
dim a(50)
randomize
for i = 1 to 50
a(i)=int(ran(0)*9)+10
next
如果原数组中存在相同的数据,只复制一个数据,其他相同的数据被舍弃,
for i = 1 to 50
for j = i to 50
if a(i)=a(j) then a(j)=100
next i,j
现要求将此数组复制到另一个数中
dim b(50)
k=1
for i = 1 to 50
if a(i)<>100 then
b(k)=a(i):k=k+1
end if
next
这个是最直观最原始的用qbasic语言对题目的翻译
3 楼
moz [专家分:37620] 发布于 2006-10-25 11:56:00
应:先排序,再复制,刚好我最近有这个程序
sub qsort (c() as double, a, b) '排序,注意更改数组类型
if a < b then
if b - a = 1 then
if c(a) > c(b) then swap c(a), c(b)
else
r = rnd * (b - a + 1) + a
swap c(b), c(r)
p = c(b)
do
i = a
j = b
do while (i < j) and c(i) <= p: i = i + 1: loop
do while (j > i) and c(j) >= p: j = j - 1: loop
if i < j then swap c(i), c(j)
loop while i < j
swap c(i), c(b)
if (i - a) < (b - i) then
qsort c(), a, i - 1
qsort c(), i + 1, b
else
qsort c(), i + 1, b
qsort c(), a, i - 1
end if
end if
end if
end sub
sub add4 (a() as double, c() as double) '自己修改一些细节,上下限之类的
c(1)=a(1)
for i = 2 to ubound(a)
if a(i)>c(j) then
j = j + 1
c(j) = a(i)
endif
next
end sub
我来回复