2014-10-03 38 views
0

好的,所以我正在編寫一個程序,旨在將7位數字輸入與已知的一組七位數輸入進行比較,並找出它們之間的距離。除了事實一切編譯罰款我收到指出「在索引組件所需的陣列型」索引組件中所需的數組類型ADA

pickbit1: 
    FOR X IN 1 .. 7 LOOP 
    pickdigit1: 
    FOR Y IN 0 .. 9 LOOP 
    IF a1(X) /= Compare(Y)(X) THEN 
     d1(X)(Y) := d1(X)(Y) + 1; 
    END IF; 
    END LOOP pickdigit1; 
END LOOP Pickbit1; 

在其中創建用於循環所述第二線時出現誤差的誤差。我不知道爲什麼會有一個指向數組索引的錯誤。 這裏是我的數組類型。

subtype segment is Character range '0' .. '1'; 
subtype distance is Integer; 
subtype c is Character range ' ' .. ' '; 
type Segment_Array is array(1 .. 7) of segment; 
type Digit_Array is array(1 .. 7) of Character range '0' .. '1'; 
type Compare_Array IS array(0 .. 9) of Digit_Array; 
type Distance_Array IS array(0 .. 9) of distance; 
type Total_Array IS array(0 .. 9, 0 .. 9) of Integer; 

A1一個Segment_Array,d1爲Distance_Array並比較是Compare_Array

+0

你來* *如此接近給我們一個[較短,自成體系,編譯示例](http://sscce.org)。我建議用'-gnatfl'作爲嵌入式錯誤消息的源列表。 – 2014-10-03 19:52:03

回答

2

如果d1Distance_Arrayd1(X)返回distance(的Integer亞型)。 Integer(或distance)不是數組類型,不能進一步索引,因此編譯器會在您嘗試執行d1(X)(Y)時抱怨。 我不知道爲什麼,編譯器會抱怨在其中創建環行,它應該抱怨行:

d1(X)(Y) := d1(X)(Y) + 1; 
+0

當我嘗試它時,編譯器確實抱怨你指示的那一行。 – 2014-10-03 19:44:15