請問一個簡單的loop |
尚未結案
|
SCChen
一般會員 發表:3 回覆:7 積分:2 註冊:2003-04-11 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
procedure add; var i,sum1,sum2:integer; begin sum1:=0; sum2:=0; for i:=1 to 6 do begin //用odd判斷是否為奇數,分別加總 if odd(i) then sum1:=sum1+i else sum2:=sum2+i; end; end;Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... |
SCChen
一般會員 發表:3 回覆:7 積分:2 註冊:2003-04-11 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
我也出個作業給你好了,把這一段改成 while 來做
procedure add; var i,j,ilen,iloop,istart,isum:integer; begin ilen:=300; iloop:=5; isum:=0; istart:=1; for i:=1 to ilen do begin if ((i-istart)>=0) and ( ((i-istart) mod iloop) = 0 ) then begin listbox1.Items.Add(inttostr(i)); isum:=isum+i; end; end; end;Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... 發表人 - hahalin 於 2003/04/13 10:45:33 |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
引言:價恐怖,部隊面向ccchen成四個班,立正,一鞠躬,再鞠躬,三鞠躬. Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... 發表人 - hahalin 於 2003/04/13 11:10:17var i:integer; sum:array[0..4] of integer; begin for i:=0 to 300 do sum[i mod 5]:=sum[i mod 5]+i; end; |
SCChen
一般會員 發表:3 回覆:7 積分:2 註冊:2003-04-11 發送簡訊給我 |
我還是寫不出來!
i:=0;
begin
for j:=0 to 2048-1 do
begin
for k:=0 to 64-1 do
begin
dSum[i]:= dSum[i] pdF[i,j k*2048];
dMean[i]:= dSum[i]/64;
end;
end;
以上是我的code片段,
但是算出的結果變成,
1st average
算出的2nd average=我要的2nd average 1st averave
.
.
2048th average=我要的2048th average ....
var
pdF :array of array of double;
dSum,dMean :array of double; 數據資料是:
共有6x2048x64數據,
pdF[i,j]存有所有的數據,
i:=0 to 5;
j:=0 to 2048*64-1 請幫忙....謝謝!
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
SCChen
一般會員 發表:3 回覆:7 積分:2 註冊:2003-04-11 發送簡訊給我 |
謝謝你的建議,我也想把全部的code貼上來,但是太長了....
簡短的說一下好了,
我有個2048x64x6的資料(數字),以把它們存成pdF[i,j]{i從0到5,j從0到
2048x64-1}
i:=0;{先算第一個2048x64的}
begin
for j:=0 to 2048-1 do
begin
for k:=0 to 64-1 do
begin
dSum[i]:= dSum[i] pdF[i,j k*2048];{我要算的是有64個區,每個區有2048項,每一項的平均,ex:第1到第64區所有第1項的平均}
dMean[i]:= dSum[i]/64;
end;
end; 不知道這樣說你懂不懂?
無論如何,感謝你的幫忙....
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
你可以想成這是一個長寬高各為2048,64,6的立方體 用XYZ座標系來說,x長度軸有2048,y軸長度為64,z軸長度為6 就你的題目來看,單一x軸為一區, 1.先固定z,y軸,取得第一區 (1,1,1),(2,1,1),...(2048,1,1)所有值加總 2.再將y軸以1為增量增加,重複步驟1取得第二區(1,2,1),(2,2,1),... (2048,2,1)所有值加總,一直到y軸的值為64 3.再將z軸以1為增量增加,重複步驟1到步驟2. 建議你建立一個三維陣列來處理,就可以求出你的解. 想成一個立方體會比較好思考,希望能幫上你的忙.Fear is the path to the dark side. Fear leads to anger.Anger leads to hate.Hate leads to suffering.... |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
從程式看不出你到底要什麼
i:=0; begin for j:=0 to 2048-1 do begin for k:=0 to 64-1 do begin dSum[i]:= dSum[i] pdF[i,j k*2048]; //此處用i不是全加到 dsum[0]中去了 dMean[i]:= dSum[i]/64; end; end;我要算的是有64個區,每個區有2048項,每一項的平均,ex:第1到第64區所有第1項的平均 應該是在i 不變的情況下就有2048個值吧 i:=0; begin for j:=0 to 2048-1 do begin for k:=0 to 64-1 do dSum[j]:= dSum[j] pdF[i,j k*2048]; dMean[j]:= dSum[j]/64; end; end;再來應如何, 由你的敘述中看不出來 |
SCChen
一般會員 發表:3 回覆:7 積分:2 註冊:2003-04-11 發送簡訊給我 |
一語點醒夢中人!
我改了Sum[j]....OK....
但是我的問題又來了,
當初pfF[i,j]被宣告成,
SetLength(pdF, 6);
SetLength(pdF[0], 64*2048);
SetLength(pdF[1], 64*2048);
SetLength(pdF[2], 64*2048);
SetLength(pdF[3], 64*2048);
SetLength(pdF[4], 64*2048);
SetLength(pdF[5], 64*2048); for i:=0 to 5 do
BlockRead(infile, pdForce[i,0], 8*iNoBlocks*iSampPerBlock, NumRead); 我試著改變pdF[i,j]....但是不行!
之前我的code只能這樣
i:=0 run一遍,
改成i:=1 再run....以此做到i:=5,
有方法可以用
For i:=0 to 5 do的方式做嗎?
還是得用其他的辦法? 謝謝....
PS.因為我的programme功力弱,我是改之前的人寫的code....
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
SCChen
一般會員 發表:3 回覆:7 積分:2 註冊:2003-04-11 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |