看板 C_and_CPP 關於我們 聯絡資訊
問題(Question): 小弟是程式新手,最近在寫一個模擬的程式,以下的程式是我的code,我預期的 結果是會跑出16筆數據,可是compile完什麼都沒有,想請板上的高手幫我看一下 是哪裡出了問題,我猜可能是傳址寫錯了,不過我不知道是哪裡錯了。 謝謝大家 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> #include <iomanip> #include <ctime> #include <cstdlib> #include <cmath> #include <math.h> #include <fstream> //================ define ======================= //定義未來function所需要的常數 #define photon_number 4 #define ma 0.0 #define ms 100.0 #define g 0.9 #define n1 1.462 #define n2 1.338 using namespace std; int a=0; double array[2000]; class photon { double x,y,z; double ux,uy,uz; double weight; bool flag; double WA,WR,WT; double theta_in,n_in,n_out,R_sp; int inrange; int file_number; double Thickness1; public: void initial(); void move(); void direction(); void set_n(double N_in,double N_out); void test_in_tissue(); void pnew_position(); void roulette(); void get(double &Z,double &WEIGHT,bool &FLAG); void new_position(); double fresnel(); void reflect(); void transmit(); }; void photon::get(double &Z,double &WEIGHT,bool &FLAG) { Z=z; WEIGHT=weight; FLAG=flag; }; void photon::initial() { x=0.0; y=0.0; z=0.0; ux=0.0; uy=0.0; uz=1.0; R_sp=((n1-n2)*(n1-n2))/((n1+n2)*(n1+n2)); weight=1-R_sp; array[a]=x;a++; array[a]=y;a++; array[a]=z;a++; array[a]=weight;a++; flag=true; }; void photon::move() { double t_x,t_y,t_z,t_weight; double rn=rand()/(double)RAND_MAX; double step_length=-1*log(rn)/(ma+ms); x=x+ux*step_length; y=y+uy*step_length; z=z+uz*step_length; array[a]=x;a++; array[a]=y;a++; array[a]=z;a++; array[a]=weight;a++; flag=false; } int main() { photon monte; int run_number; double Z,Weight; bool Flag; for(int i=0;i<photon_number;i++) { monte.initial(); while(Flag) { for(int k=0;k<a;k++) { cout<<setw(14)<<array[k]; if(k>=3&&(k+1)%4==0) cout<<endl; } monte.move(); } } delete array; system("pause"); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.174.30
james732:新手寫這樣會不會野心太大了...XD 03/18 16:35
Bencrie:是要玩 ray-tracing嗎 XD 03/18 17:12
legnaleurc:好逆天的寫法 ... 那個 global int a 是哪招? XD 03/18 17:22