FORTRAN数组问题,求高手! 50
在不另辟数组的前提下(这是重点!!!),将一个数组内的指定位置上的两段数进行对调。比如:原数组元素为1,2,3,4,5,6,7,8,9,指定2,3与5,6,7,8对调调换...
在不另辟数组的前提下(这是重点!!!),将一个数组内的指定位置上的两段数进行对调。
比如:原数组元素为1,2,3,4,5,6,7,8,9,指定2,3与5,6,7,8对调
调换后变为1,5,6,7,8,4,2,3,9
求fortran代码或者思路,急~~~~~~~~ 展开
比如:原数组元素为1,2,3,4,5,6,7,8,9,指定2,3与5,6,7,8对调
调换后变为1,5,6,7,8,4,2,3,9
求fortran代码或者思路,急~~~~~~~~ 展开
1个回答
2015-10-05
展开全部
思路:
1、先将2、3、4缓存到变量x、y、z中;
2、循环4次,将5、6、7、8向左平移三位,即a[i]=a[i+3];
也就是:a[2]=a[5];a[3]=a[6];a[4]=a[7];a[5]=a[8];
3、a[6]:=z;a[7]=x;z[8]=y
----这只是对你的这种特例的办法,没有一点通用性。
要解决这样的问题,就是要使用缓存的中间数组 !!!以下用pascal实现:
const
a:array[1..10] of integer=(11,12,13,14,15,16,17,18,19,20);
b:array[1..10] of integer=(1,5,6,7,8,4,2,3,9,10);
var
i:integer;
c:array[1..10] of integer;
begin
for i:=1 to 10 do c[i]:=a[b[i]];
for i:=1 to 10 do writeln(c[i]);
end.
1、先将2、3、4缓存到变量x、y、z中;
2、循环4次,将5、6、7、8向左平移三位,即a[i]=a[i+3];
也就是:a[2]=a[5];a[3]=a[6];a[4]=a[7];a[5]=a[8];
3、a[6]:=z;a[7]=x;z[8]=y
----这只是对你的这种特例的办法,没有一点通用性。
要解决这样的问题,就是要使用缓存的中间数组 !!!以下用pascal实现:
const
a:array[1..10] of integer=(11,12,13,14,15,16,17,18,19,20);
b:array[1..10] of integer=(1,5,6,7,8,4,2,3,9,10);
var
i:integer;
c:array[1..10] of integer;
begin
for i:=1 to 10 do c[i]:=a[b[i]];
for i:=1 to 10 do writeln(c[i]);
end.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询