2014-09-30 110 views
-2

嗯,這裏是我的代碼,我有一個問題,因爲我的n不增加:For循環不工作在C++

#define N    100 
#define N_EQUATIONS  18 + 2 

//initial values 
int v = 1; 
int cai = 2; 
int caSR = 3; 
int nai = 4; 
int ki = 5; 
int dvdt = 18; 

double V_init = -87.5; 
double Cai_init=1.0e-4; 
double cansr=1.2; 
double cajsr=cansr; 
double CaSR_init = cansr + cajsr; 
double Nai_init = 7; 
double Ki_init = 145; 
double u[N + 1][N_EQUATIONS + 1]; 
double Im[N + 1]; 


int main() { 

    int n = 0; 

    for (n = 0; n <= N; n++) { 
     printf("n=%.18f\n", n); 

     u[n][v] = V_init; 
     //printf("t=%.18f\n", u[n][v]); 
     u[n][cai] = Cai_init; 
     //printf("cai=%.18f\n", u[n][cai]); 
     u[n][caSR] = CaSR_init; 
     u[n][nai] = Nai_init; 
     u[n][ki] = Ki_init; 
     u[n][dvdt] = 0.0;//check it 
     tapend[n] = 0.0; 
     tapstart[n] = 0.0; 
    } 
} 

很抱歉,如果這是一個愚蠢的問題,答案是在盯着我眼睛..

PS看到新的修改後的代碼

+2

學習使用調試器。它會讓你的生活更輕鬆。 – dandan78 2014-09-30 08:08:11

+3

你的程序甚至不應該編譯!什麼是「cai」和「ki」?他們從未在任何地方宣佈。對於許多其他變量也一樣。 – 2014-09-30 08:10:56

+0

我剛剛添加了cai和其他變量。問題是當我嘗試printf「N」時,它顯示我N = 0,就好像它沒有讀取頂部的定義一樣。所以我試圖在int的主循環中聲明它,但仍然遇到同樣的問題。 – chrysovalando 2014-09-30 08:16:57

回答

4

你可能只是困惑,因爲你的printf是不正確的:

printf("n=%.18f\n", n); 

應,例如

printf("n=%18d\n", n); 

目前,你只是打印垃圾在循環(0,你的情況,似乎,但它可以是任何東西),所以這可能給不正確的印象,n未正確遞增。

請注意,如果您啓用編譯器警告(並且編譯器警告應該啓用始終),那麼編譯器會向您指出這個錯誤。始終啓用編譯器警告,並始終注意任何警告,理解並修復它們。

+1

非常感謝! – chrysovalando 2014-09-30 08:22:28