[問題] 陣列宣告

看板C_and_CPP (C/C++)作者 (aloha)時間16年前 (2009/09/15 14:08), 編輯推噓3(305)
留言8則, 4人參與, 最新討論串1/3 (看更多)
小弟我是程式初心者,最近在寫monte carlo的程式 這程式主要是 要把吸收的比重 存到陣列裡頭 #include <iostream> using std::cout; #include <iomanip> using std::setw; #include <ctime> #include <cstdlib> #include <math.h> 這是我自己define的標頭檔 #include "main.h" #include "define.h" int main() { srand(time(NULL)); photon m6; double R_sp; bool tissue_flag; R_sp=((n1-n2)*(n1-n2))/((n1+n2)*(n1+n2)); m6.WA=0;m6.WR=0;m6.WT=0; m6.WR=m6.WR+photon_number*R_sp; int gridSize_t=thickness/dz; int gridSize_w=width/dr; double out_bound=0; 這四項出現了錯誤訊號 variable-sized object `xxxx' may not be initialized double absorption[gridSize_t][gridSize_w]={0}; double volume[gridSize_w]={0}; double Source[gridSize_t][gridSize_w]={0}; double fluence[gridSize_t][gridSize_w]={0}; for (int p=0;p<photon_number;p++) { m6.x=0;m6.y=0;m6.z=0; m6.ux=0;m6.uy=0;m6.uz=1; m6.weight=1-R_sp; m6.flag=true; while (m6.flag) { move(&m6); if(m6.z<0) { tissue_flag=false; test_in_tissue(tissue_flag,&m6); } else if(m6.z>thickness) { tissue_flag=true; test_in_tissue(tissue_flag,&m6); } if((m6.z>=0)&&(m6.z<=thickness)) { m6.WA=m6.WA+m6.weight*(ma/(ma+ms)); 其實我很想把下面這一塊 寫成一個cpp檔 讓我連結進來這樣程式才不會落落長 double r =sqrt((m6.x)*(m6.x)+(m6.y)*(m6.y)); unsigned int i=r/dr; i++; unsigned int j=m6.z/dz; j++; if (r>width) { out_bound=out_bound+m6.weight*(ma/(ma+ms));} else { absorption[j][i]=absorption[j][i]+m6.weight*(ma/(ma+ms)); volume[i]=(2*i+1)*pi*dr*dr*dz; Source[j][i]=absorption[j][i]/(photon_number*volume[i]); fluence[j][i]=Source[j][i]/ma; } 以上各位高手 如果要把它拉出來當個副函式 要怎麼寫呢? m6.weight = m6.weight*(ms/(ma+ms)); if(m6.weight<w_th) {roulette(&m6);} else {direction(&m6);} } } } system("pause"); } 跪謝了~ 因為 程式功力很差 看的很吐血請見諒 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.174.168 ※ 編輯: alohaiscool 來自: 140.112.174.168 (09/15 14:13)

09/15 14:12, , 1F
那段另外放在另一個.cpp 這個main.cpp再放那個function
09/15 14:12, 1F

09/15 14:15, , 2F
的宣告 前面在加上extern 至於funtion例子 可找版上範例
09/15 14:15, 2F

09/15 14:16, , 3F
之前其他的部份 都有成功 但是就是那一段 有陣列就掛
09/15 14:16, 3F

09/15 14:24, , 4F
陣列改用常數試試看
09/15 14:24, 4F

09/15 15:44, , 5F
把gridSize_t這類變數的宣告加const試試
09/15 15:44, 5F

09/15 16:05, , 6F
加了const就對了說...
09/15 16:05, 6F

09/15 16:24, , 7F
這不是好的解決方法
09/15 16:24, 7F

09/15 16:25, , 8F
修正,加 const 並非正確的解決方法
09/15 16:25, 8F
文章代碼(AID): #1AhozLKr (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AhozLKr (C_and_CPP)