排列数字(100分)

  • 主题发起人 主题发起人 farce
  • 开始时间 开始时间
F

farce

Unregistered / Unconfirmed
GUEST, unregistred user!
取一值X,如16,
现需要此值从1至X的数列,并分成奇、偶数组A1、A2
从A1、A2中提取值:
B1:A2[Max],A1[min]...直到B1[max]=x/2-1
B2:A2[min],A1[max]...直到B2[max]=x/2+1
起因是,在打印中,有2版、4版之说,如果页数过大如何按顺序打印的问题。
 
>>如何按顺序打印
请详细说明您所谓的“顺序”是什么样的(估计等你描述清楚了,你自己就可以搞定了)。
1:
1
2:
1 2
4:
1 2 or 1 2 ?
4 3 3 4
 
现在把程序写好了,但簋繁琐,其实是页码分配的问题。对于OFFICE,可以分
2版、4版打印,但是如果页码过多,如48、或60等数字时,如何进行打印的顺序
排列。
C语言中可进行for (1=0,i>60-1,i++)此句进行计算,但不太明白,也无法变成PASCAL
例子如下:数字为16,计算后显示如下
第一次打印B1:16,1,14,3,12,5,10,7
第二次打印B2:2,15,4,13,6,11,8,9
A1是奇数1,3,5,7...15
A2是偶数2,4,6,8...16
B1:A2[Max],A1[min]...直到B1[max]=x/2-1
B2:A2[min],A1[max]...直到B2[max]=x/2+1
 
const N=16;
var
A:Array of Integer;
i:Integer;
s:String;
begin
SetLength(A,N div 2);
for i:=0 to N div 4-1do
A[i*2]:=(N div 2 -i)*2;
for i:=0 to N div 4-1do
A[i*2+1]:=i*2+1;
s:='第一次打印B1:';
for i:=0 to N div 2 -1do

if i<>N div 2-1
then
s:=s+IntToStr(A)+','
else
s:=s+IntToStr(A);
Memo1.Lines.Add(s);
for i:=0 to N div 4-1do
A[i*2]:=i*2;
for i:=0 to N div 4-1do
A[i*2+1]:=(N div 2 -i)*2-1;
s:='第二次打印B2:';
for i:=0 to N div 2 -1do

if i<>N div 2-1
then
s:=s+IntToStr(A)+','
else
s:=s+IntToStr(A);
Memo1.Lines.Add(s);
end;
 
To DarwinZhang:
复杂,比我写的还复杂,我最初想要数组进行计算,后来有人用C语言来计算,很
简洁,好象是for(i=0;i>16-1;i==);printf(%d,%d,i,60-1-i);就可以得到B1。
 
什么复杂?只不过四个循环而已,可读性是最好的。
复杂的是输出语句,其实您更本就用不到这些输出语句,
只要知道那些排列就可以了,你实际上用的只有:
SetLength(B1,N div 2);
SetLength(B2,N div 2);
for i:=0 to N div 4-1do
begin
B1[i*2]:=(N div 2 -i)*2;
B1[i*2+1]:=i*2+1;
B2[i*2]:=i*2;
B2[i*2+1]:=(N div 2 -i)*2-1;
end;
而已。真不明白您要干什么?[:)]
 
To DarwinZhang:
是打印OFFICE文件用的,每次打印都要计算一次,很繁琐。
你不要用数组了,要输出到edit中,打印时需要copy
我的QQ:179440252,在线
 
Edit1.Text:='';
Edit2.Text:='';
for i:=0 to N div 4-1do
begin
Edit1.Text:=Edit1.Text+Format('%d,%d,',[(N div 2 -i)*2,i*2+1]);
Edit2.Text:=Edit2.Text+Format('%d,%d,',[i*2,(N div 2 -i)*2-1]);
end;
 
i:=16;edit1.text:='';
while (i>16 div 2)do
begin
edit1.text:=edit1.text+inttostr(i)+' '+inttostr(16-i+1)+' ';
Dec(i,2);//i:=i-2;
end;
//这个就是你的那个c语言的改写,得到的是b1
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部