2015-07-21 68 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循環中聲明的。這就是爲什麼它在第二個循環中不可見。在第一次循環開始之前聲明它。