作者robert000 (蚯哥)
看板C_and_CPP
標題[問題] 關於傳址的問題
時間Fri Mar 18 16:19:59 2011
問題(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