2016-11-24 340 views
-4

我试图通过以0.1为增量循环从0到1来生成网格。代码运行良好,当我用一个整数递增,例如从0到10以1为增量,但我无法理解这是什么错误。C++错误错误:数组下标无效类型'double [10] [10] [double]'

#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 
} 
} 
+4

而你的问题是,究竟是什么? '我'和'J'是双打。你不能用double来索引一个数组。下一个问题,请......显示的代码也有另一个bug。两个循环都使用'i'。 –

+0

数组索引是整数。你不能使用双精度来代替整数来索引数组。显然,你不能声明'double dx = 0.1,i,j;'。您在标题中包含的错误消息以简明的语言告诉您。学习阅读信息中的词语 - 它们有意义。他们不在那里只是占用屏幕上的空间。 –

+0

修正了第二个循环是j。如果我使用整数递增,循环将永远运行。 i + dx = i为整数。 – Nick

回答

0

您遇到的问题是您尝试通过使用双精度值(例如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); 

} 

因此,而不是试图在访问U [0.3] [0.3],我们访问了ü在[3] [3],只是把我输入到数组中的两倍。