我正在编写一个函数来解决流值问题,这是我的数值方法研究的一部分。这是该程序的“肉”,但却出现了许多奇怪的错误,这很奇怪,因为我在其他程序中使用了相同的代码而没有任何错误。
void solve_stream(void)
{
double residual, residual_total;
int resid_count, count=0;
do
{
residual_total=0.0;
resid_count=0;
for(int i=0;i<maxi;i++)
for(int j=0;j<maxj;j++)
if((i+j)%2==count%2)
{
residual= P[i][j]*e[i][j]-f[i][j];
if(i<maxi-1) residual+= P*[i+1][j]*a[i][j];
if(i>0) residual+= P[i-1][j]*b[i][j];
if(j<maxj-1) residual+= P[i][j+1]*c[i][j];
if(j>0) residual+= P[i][j-1]*d[i][j];
residual_total+= fabs(residual);
resid_count++;
}
residual_total = residual_total/resid_count; //average residual
count++;
if(count%100==0) cout<<"-";
}
while(residual_total>1.0);
}
在第155行,如果(不是'maxi-1),编译器返回'错误C2143:语法错误:丢失']'在'+'之前',即使残差被定义为一双!
对于定义的所有变量,它返回'错误C3493:'残留'不能被隐式捕获,因为没有指定默认捕获模式';甚至对于我和j!
答案 0 :(得分:1)
P*[i+1][j]
什么是P?它似乎是一个数组,但在这里你将它倍增。
答案 1 :(得分:1)
这看起来很可疑:
P*[i+1][j]
你可能意味着
P[i+1][j]