Types 如何在Ada中将一个类型更改为另一个类型?

Types 如何在Ada中将一个类型更改为另一个类型?,types,ada,Types,Ada,我对在Ada中更改类型感到困惑。特别是接收用户输入(存储为字符串),然后对其执行浮点或整数操作。我的目标是根据用户的开始点和停止点创建一个对数表,并按他们想要的任何值递增。我试过这样的方法:Start:=Float'Image(Start);我可以帮你一些忙,谢谢 with Ada.Text_IO, Ada.Float_Text_IO, Ada.Numerics.Elementary_Functions; use Ada.Text_IO, Ada.Float_Text_IO, Ada.Nume

我对在Ada中更改类型感到困惑。特别是接收用户输入(存储为字符串),然后对其执行浮点或整数操作。我的目标是根据用户的开始点和停止点创建一个对数表,并按他们想要的任何值递增。我试过这样的方法:Start:=Float'Image(Start);我可以帮你一些忙,谢谢

with Ada.Text_IO, Ada.Float_Text_IO, Ada.Numerics.Elementary_Functions;
use  Ada.Text_IO, Ada.Float_Text_IO, Ada.Numerics.Elementary_Functions;

procedure log_table is

   Start, Stop, Increment, temp : Float; 

begin                                           -- Prompt for input
   Put_Line("To print a table of logarithms,");
   Put(" enter the start, stop, and increment values: ");
   Get(Start); Get(Stop); Get(Increment);

   loop 
    exit when (Start > Stop);
    Put("The logarithm of");
    Put(Start);
    Put(" is ");
    Put_Line( log(Start, 10.0) );
    Start := Start + Increment;
   end loop;

end log_table;
所以代码现在运行。。。我将在下面发布代码的更改部分。我所做的只是将Put_行函数更改为Put函数,然后在之后添加一个新的_行函数。这有什么原因吗?根据我的理解,Put_行和Put之间的唯一区别是在末尾添加“\n”。如能更好地理解,将不胜感激

   loop 
    exit when (Start > Stop);
    Put("The logarithm of ");
    Put(Start);
    Put(" is ");
    Put( log(Start, 10.0));
    New_Line;
    Start := Start + Increment;
   end loop;

通常,使用目标类型的名称将一种类型转换为另一种类型,就像它是函数名一样:

 A := Some_Integer_Type (3.41);

但这只适用于兼容类型。数组(如字符串)和数字类型永远不兼容,因此您很可能正在查找。

通常,您可以使用目标类型的名称将其转换为另一种类型,就像它是一个函数名一样:

 A := Some_Integer_Type (3.41);

但这只适用于兼容类型。数组(如字符串)和数字类型永远不兼容,因此您很可能正在查找。

请阅读您正在使用的软件包的规范。如果删除
use
子句,并插入所调用子程序的全名,您可能也会学到一些东西。这非常简单,Put\u行不存在于实际类型中,如Put\u行中所述,它不会在末尾添加“\n”。(“\n”在Ada中是一个语法错误。)如果您输入一个包含“\n”的字符串,您将在输出中获得两个字符“\”和“n”。请阅读您正在使用的软件包的规范。如果删除
use
子句,并插入所调用子程序的全名,您可能也会学到一些东西。这非常简单,Put\u行不存在于实际类型中,如Put\u行中所述,它不会在末尾添加“\n”。(“\n”在Ada中是一个语法错误。)如果输入包含“\n”的字符串,将在输出中获得两个字符“\”和“n”。