線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:766
推到 Plurk!
推到 Facebook!

請問一個簡單的loop

尚未結案
SCChen
一般會員


發表:3
回覆:7
積分:2
註冊:2003-04-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-13 07:54:28 IP:64.208.xxx.xxx 未訂閱
我有數據資料, 1 2 3 4 5 6 我現在想要算第1,3,5項的平均,和第2,4,6項的平均並列出其值,如 3 4 來該怎麼做? 謝謝.... PS.我是用Delphi 4.
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-13 08:38:24 IP:203.203.xxx.xxx 未訂閱
    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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-13 09:06:23 IP:64.208.xxx.xxx 未訂閱
不好意思,我問題是舉個簡單的例子, 我的資料不只1到6個數字,如果有300個數字呢? 1 2 . . 300 五個數字一個loop即第一,六,十一....到296的平均,第二,七....297,以此列推.... 謝謝 SSChen
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-13 10:25:27 IP:203.203.xxx.xxx 未訂閱
我也出個作業給你好了,把這一段改成 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-13 10:27:37 IP:218.32.xxx.xxx 未訂閱
有沒有可能用其他欄位(供 Group by), 以 SQL 'AVG()' 函數來達成.
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-13 10:32:19 IP:203.217.xxx.xxx 未訂閱
var 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;
發表人 - ccchen 於 2003/04/13 10:35:27
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-13 11:09:37 IP:203.203.xxx.xxx 未訂閱
引言:
var 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;
價恐怖,部隊面向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:17
SCChen
一般會員


發表:3
回覆:7
積分:2
註冊:2003-04-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-13 16:53:24 IP:64.208.xxx.xxx 未訂閱
我還是寫不出來! 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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-13 19:46:11 IP:203.203.xxx.xxx 未訂閱
  小小的建議,      是否可以把完整的code放上來,      會比較好處理些喔...     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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-13 21:05:57 IP:64.208.xxx.xxx 未訂閱
謝謝你的建議,我也想把全部的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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-13 23:19:58 IP:203.203.xxx.xxx 未訂閱
     你可以想成這是一個長寬高各為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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-14 08:51:42 IP:61.219.xxx.xxx 未訂閱
從程式看不出你到底要什麼
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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-04-14 15:13:11 IP:64.208.xxx.xxx 未訂閱
一語點醒夢中人! 我改了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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-04-14 19:14:45 IP:218.32.xxx.xxx 未訂閱
對不起, 打斷各位的興致, 請問這篇與資料庫有關嗎 ?
SCChen
一般會員


發表:3
回覆:7
積分:2
註冊:2003-04-11

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-04-14 19:39:59 IP:64.208.xxx.xxx 未訂閱
引言: 對不起, 打斷各位的興致, 請問這篇與資料庫有關嗎 ?
不要這樣說,因為我的資料像資料庫,我也不知道貼在這裡對不對.... 我一直弄不出來,所以才找到這來問的.... 希望不會帶給板主太大的困擾....
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-04-15 08:20:03 IP:61.219.xxx.xxx 未訂閱
基本上再加個loop就好了不是嗎? 還是不清楚你想要的結果是什麼? 任何問題要先想清楚你到底要什麼?     i:=0 時有2048個dsum及dmean故總共有6*2048個值, 是否你要的    
for i:=0 to 5 do begin
  for j:=0 to 2048-1 do  begin 
     for k:=0 to 64-1 do    
       dSum[i,j]:= dSum[i,j] pdF[i,j k*2048];
     dMean[i,j]:= dSum[i,j]/64;
  end;
end;
系統時間:2024-07-03 5:42:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!