首页 文章

Ada:获取数组中最后一个元素的前缀问题

提问于
浏览
0

我正在尝试我的第一个Ada计划(Ada 2012)并遇到一些困难 . 我从用户那里获得输入并将其存储到许多无界字符串中 . 然后我将这些无界字符串传递给一个过程,在这个过程中我提取每个无界字符串的最后一个元素并将其添加到字符数组中 . 我读到数组需要实例化为类型,但是当我这样做时,我遇到了错误,所以我实例化了没有类型引用 .

问题来自于

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;

1 回答

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

    很可能会解决你的问题 .

相关问题