2014-09-30 112 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