2015-07-21 61 views
0

下面是基本代码块,我试图运行铸字翻番

double h_a[9],h_b[2500],h_c[2704]; 
int r_a,c_a,r_b,c_b,r_c,c_c; 
r_a = c_a = 3; 
r_b = c_b = 50; 
r_c = r_a + r_b - 1; 
c_c = c_a + c_b - 1; 
for(int i=0;i<(r_a*c_a);i++) 
    h_a = double(rand() % 50 + 1); 
for(i=0;i<(r_b*c_b);i++) 
    h_b = rand() % 50 + 1; 

它显示我以下错误: 1.不兼容类型的“双师型”的分配“双[9] 2.'我'的名称查找更改为ISO'范围[-fpermissive] | 3.赋予'int'到'double [2500]'的不兼容类型'

帮助将不胜感激。

+0

你不能在第二个'for'语句中声明'double'到'double *',并且'int'到'double *'....并且'i'没有被声明。你应该首先学习基本的语法和规则...... – Shindou

+0

h_a是一个数组,你试图给它分配一个double值。 可能应该是h_a [i] = double(rand()%50 + 1) – gidim

回答

1

h_ah_b是数组。您不能将值分配给数组,而只能分配给数组的元素。

通过

h_a[0] = double(rand() % 50 + 1); 

更换

h_a = double(rand() % 50 + 1); 

,使在分配相似的变化,以h_b将满足编译器。我不知道这是否是正确的。

您有两个for循环。第一个定义循环头中的循环变量;第二不会:

for (int i = blah; blah; blah) { ... } 
for (i = blah; blah; blah) { ... } 

在第一回路限定的i的范围仅仅是循环。它在第二个循环中不可见。但是在旧版本的C++中,范围扩展到封闭循环的块。根据这些规则,这将是合法的。显然,编译器仍然认可旧规则。将第二个循环中的i = ...更改为int i = ...。然后,您将有两个不同的变量,分别名为i,每个循环一个。

+0

非常感谢! –

0

您正在为数组的名称赋值,这是错误的。您可以将其分配给数组的一个元素。 我是在第一个for循环中声明的。这就是为什么它在第二个循环中不可见。在第一次循环开始之前声明它。