我试图通过以0.1为增量从0循环到1来生成网格。当我用一个整数递增时代码运行正常,例如从0增加到10,增量为1,但我无法理解这是错误的。
#include <iostream>
using namespace std;
int main()
{
double u[10][10];
double dx=0.1, i, j;
for(i=0;i<=1;i+=dx)
for(j=0;j<=1;j+=dx)
{
u[i][j]=i; // this line gives an error
}
}
答案 0 :(得分:0)
您遇到的问题是您尝试使用double(例如0.3)访问数组的索引。由于数组索引是整数,因此尝试访问双索引将导致错误。
我认为这是你想要做的,所以试试这个:
#include <iostream>
using namespace std;
int main()
{
double u[11][11];
for (int i = 0; i <= 10; i++)
for (int j = 0; j <= 10; j++)
u[i][j] = (double)(i / 10.0);
}
因此,我们不是试图在[0.3] [0.3]处访问你,而是在[3] [3]处访问你,只是在将i输入数组时将i改为double。