主题:请教"咬尾巴"移位
fdxxhjc
[专家分:0] 发布于 2009-03-26 09:36:00
大家知道,用以下代码
CLEAR
PUBLIC AA(1,6)
FOR I=1 TO 6
AA(1,I)=I*I
?? AA(1,I)
ENDFOR
可以显示结果:
1 4 9 16 25 36
现在想用代码(循环语句)将上面这一行"咬尾巴"的移位成以下形式
4 9 16 25 36 1
9 16 25 36 1 4
16 25 36 1 4 9
25 36 1 4 9 16
36 1 4 9 16 25
谢谢!
回复列表 (共6个回复)
沙发
qjbzjp [专家分:8830] 发布于 2009-03-26 10:56:00
CLEAR
PUBLIC AA(6,6)
FOR i=1 to 5
FOR j=1+i to 6+i
n=j-int(j*0.1+0.3)*6
AA(i,j)=n*n
?? AA(i,j)
NEXT
?
NEXT
板凳
fdxxhjc [专家分:0] 发布于 2009-03-26 11:45:00
首先谢谢qjbzjp老师,但还要提两个问题
一是" n=j-int(j*0.1+0.3)*6"这行中的0.1和0.3两个数是依据什么决定的?
二是当原来的一行不只是"1 4 9 16 25 36"这六个数,而是一般的如
"1 4 9 16 25 .... i*i"时那代码又该如何呢?谢谢
3 楼
qjbzjp [专家分:8830] 发布于 2009-03-26 15:46:00
一、满足j<7时n=j, 每当j=7时,n=1
二、只能依要求来灵活改变,例如"1 4 9 16 25 36 49":
PUBLIC AA(8,7)
FOR i=1 to 7
FOR j=i to 6+i
n=j-int(j*0.1+0.2)*7
AA(i,j)=n*n
?? AA(i,j)
NEXT
?
NEXT
4 楼
fdxxhjc [专家分:0] 发布于 2009-03-26 16:02:00
哦,这我想还达不到任意几个"1 4 9 16 25 .... i*i"的要求,谢谢指导
5 楼
homayzh [专家分:7040] 发布于 2009-03-26 23:27:00
PUBLIC abc(num,num) &&定义数组并赋值
FOR a = 1 to num
FOR b = 1 to num
abc(a,b) = (a-1)*num+b
??abc(a,b)
ENDFOR
?
ENDFOR
***********咬行------
FOR x = 1 to num
FOR y = 1 to x -1
u = abc(x,1)
FOR o = 1 to num-1
abc(x,o) = abc(x,o+1)
ENDFOR
abc(x,num)= u
ENDFOR
ENDFOR
*---显示数据
FOR w = 1 to num
?
FOR q = 1 to num
??abc(w,q)
ENDFOR
ENDFOR
?
***********咬列
FOR y = 1 to num
FOR x = 1 to y -1
u = abc(1,y)
FOR o = 1 to num-1
abc(o,y) = abc(o+1,y)
ENDFOR
abc(num,y)= u
ENDFOR
ENDFOR
*---显示数据
FOR w = 1 to num
?
FOR q = 1 to num
??abc(w,q)
ENDFOR
ENDFOR
6 楼
homayzh [专家分:7040] 发布于 2009-03-26 23:28:00
我没有用你们的什么大了小了的
第N行循环换位N-1次,就ok了
我来回复