2015-08-08 24 views
0

我正在試驗我的第一個Ada程序(Ada 2012)並遇到一些困難。我從用戶那裏獲得輸入,並將其存儲到大量無限制的字符串中。然後,我將這些不受限制的字符串傳遞給一個過程,在該過程中,我提取每個無界字符串的最後一個元素並將其添加到字符數組中。我讀過數組需要實例化爲類型,但是當我這樣做時,我遇到了錯誤,所以我沒有類型引用實例化。Ada:獲取數組中最後一個元素的前綴問題

這個問題來與

last: Character := c0.Last; 

我得到C0「‘錯誤的’,在選定的組件無效前綴」。

下面是到目前爲止的代碼:

with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Strings.Unbounded.Text_IO; 
use Ada.Text_IO, Ada.Integer_Text_IO, Ada.Strings.Unbounded, Ada.Strings.Unbounded.Text_IO; 

    procedure game is 

     card0: Unbounded_String; 
     card1: Unbounded_String; 
     card2: Unbounded_String; 
     card3: Unbounded_String; 
     card4: Unbounded_String; 

     cardNumArray: array (1..5) of Integer; 
     suiteArray: array (1..5) of Character; 

    procedure setUpData(c0, c1, c2, c3, c4: in Unbounded_String) is 
    last_c0: Character := c0.Last; 
    begin 

     suiteArray := (last_c0, 'S', 'S', 'H', 'S'); 

    end setUpData; 

    begin 

     Put_Line ("Enter your card details:\n"); 
     Put_Line ("Enter card 1, e.g. ""AH:"" "); 
     Get_Line(card0); 
     Put_Line ("Enter card 2, e.g. ""KH:"" "); 
     Get_Line(card1); 
     Put_Line ("Enter card 3, e.g. ""QH:"" "); 
     Get_Line(card2); 
     Put_Line ("Enter card 4, e.g. ""10H:"" "); 
     Get_Line(card3); 
     Put_Line ("Enter card 5, e.g. ""JH:"" "); 
     Get_Line(card4); 

     setUpData(card0, card1, card2, card3, card4); 

    end game; 
+0

當'c0'是'Unbounded_String'時,爲什麼期望能夠寫'c0.Last'? –

+0

您是否瀏覽過語言參考手冊中的第A.4.5節?它可能會幫助你。 –

+0

作爲偶爾的牌手,我覺得有義務告訴你,牌具有「套裝」,而不是「套房」。 – ajb

回答

2
last_c0 : Character := element (c0, length (c0)); 

可能解決您的問題。

相關問題