全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1049
推到 Plurk!
推到 Facebook!

迴圈與2維陣列的問題

尚未結案
penny015
一般會員


發表:20
回覆:15
積分:7
註冊:2005-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-28 23:14:13 IP:163.13.xxx.xxx 未訂閱
我目前要將iArray陣列的偶數位置的值存到StringGrid1->Cells[count_j][count_i],依序是[0][0],[1][0],[2][0],[3][0]....等。編譯時會過,但是RUN程式時會出現OUT OF MEMORY的訊息...請問是我程式寫錯嗎??? 還有我迴圈跟IF判斷式寫了很多層,有可以改善的地方,可以更SMART一點。謝謝
int iArray[1224][1624];    for(i=9; i<1214; i  )
  {
     for(j=9; j<1624; j  )
     {
        if((i>9)&&(j>9)){
            if((i%2==0)&&(j%2==0)){
      StringGrid1->Cells[count_j][count_i]=(IntToStr(iArray[i}[j]));
       count_j  ;
             }
          }
        count_j  ;
     }
     count_i  ;
  }
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-28 23:36:45 IP:203.204.xxx.xxx 未訂閱
您好: >RUN程式時會出現OUT OF MEMORY的訊息...請問是我程式寫錯嗎??? 這問題應該是Stack OverFlow,您可以去 [Project]->[Option]->[Linker]->PE file options調整Max Stack Size.    還有我迴圈跟IF判斷式寫了很多層,有可以改善的地方,可以更SMART一點。謝謝
if((i>9)&&(j>9)){//這一行應該可以拿掉吧,然後i,j初值設為10.
[/quote]
penny015
一般會員


發表:20
回覆:15
積分:7
註冊:2005-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-29 00:06:08 IP:163.13.xxx.xxx 未訂閱
你好:謝謝你的回應,我想先簡化我的問題來說明我的意思,我如果照我下面的程式RUN出來後,只會將資料填完第一列而已,就不會繼續做了....謝謝        
int jj=0,ii=0;
for(i=0; i<10; i  )
{
     ii  ;
      for(j=0; j<19; j  )
      {
        if((i%2==0)&&(j%2==0)){
         jj  ;
         StringGrid1->Cells[jj][ii]=(IntToStr(iArray[i][j]));
         }
       }
}    
引言: 您好: >RUN程式時會出現OUT OF MEMORY的訊息...請問是我程式寫錯嗎??? 這問題應該是Stack OverFlow,您可以去 [Project]->[Option]->[Linker]->PE file options調整Max Stack Size. 還有我迴圈跟IF判斷式寫了很多層,有可以改善的地方,可以更SMART一點。謝謝
if((i>9)&&(j>9)){//這一行應該可以拿掉吧,然後i,j初值設為10.
[/quote]
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-29 00:59:57 IP:203.204.xxx.xxx 未訂閱
您好: 應該不是沒填,是您的StringGrid的RowCount,ColCount太少 我把他改了一下,您看看吧.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int iArray[10][10];
int y=0,x,i,j;
for(i=0; i<10; i  )
 {
  if (i%2==0) y  ;
  x=0;
  for(j=0; j<10; j  )
   {
    if((i%2==0)&&(j%2==0))
     {
      x  ;
      StringGrid1->Cells[x][y]=(IntToStr(iArray[i][j]));
     }
   }
}
penny015
一般會員


發表:20
回覆:15
積分:7
註冊:2005-03-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-02 00:43:09 IP:163.13.xxx.xxx 未訂閱
您好:我將大大提供的程式修改成取一跳三,起始位置是(10,10) 下一個是(14,10)...等。等到把第一列所以行數做完後,應該是跳(10,14)的但是我的程式卻跳到(10,18)....大大可以幫我看看程式有什麼問題嗎???謝謝    
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int iArray[1224][1624];
int y=0,x,i,j;
for(i=10; i<1224; i  )
 {
  if (i%4==2) y  ;
  x=0;
  for(j=10; j<1624; j  )
   {
    if((i%4==2)&&(j%4==2))
     {
      x  ;
      StringGrid1->Cells[x][y]=(IntToStr(iArray[i][j]));
     }
   }
}    
引言: 您好: 應該不是沒填,是您的StringGrid的RowCount,ColCount太少 我把他改了一下,您看看吧.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int iArray[10][10];
int y=0,x,i,j;
for(i=0; i<10; i  )
 {
  if (i%2==0) y  ;
  x=0;
  for(j=0; j<10; j  )
   {
    if((i%2==0)&&(j%2==0))
     {
      x  ;
      StringGrid1->Cells[x][y]=(IntToStr(iArray[i][j]));
     }
   }
}
系統時間:2024-06-02 1:28:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!