说明:我在Ada 95中制作的程序假设根据用户的输入输出一个税表,如下所示:Ada 95 - 子程序内循环给出输出*** inf ***
价格:无税|税收|价格与税收
如果用户输入价格:10,最新价格: 20,步骤: 0.5和税为整数。程序然后在停止之前以0.5的步长从10重复到20。
我面临的问题是“税收”和“含税价格”的输出值。我得到的结果是两列都是**** inf ****。我不知道这实际上意味着什么,我也找不到任何其他信息。所以我做了另一次尝试,得到了我想要的结果,除了迭代中的第一行外。它从Value 10 Taxes = 0开始,最后Pris的税额= 0,但所有其他列和行都是正确的。
是不是假设像在Main中一样,用与子程序一样的方式来处理子程序?我在另一个文件中有完全相同的程序,不同之处在于它全部在Main中,而不是在子程序中。
有没有其他人经历过这一点,并知道如何解决它?
--------代码------------------------------------- -----------------
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Float_Text_IO; use Ada.Float_Text_IO;
procedure Momstabell is
-- First Price, Last Price, Steps & Taxes(in Integer),- Subprogram
procedure Hamta(S : in String;
Tal : out Float) is
begin
Put(S);
loop
Get(Tal);
exit when Tal > 0.0;
end loop;
end Hamta;
procedure Skriv_Ut(Forsta_Pris, Sista_Pris, Steg, Momsprocent : in
Float) is
First_Price, Last_Price, Steps, Price_With_Tax, Tax_Percentage, Tax :
Float;
begin
New_Line;
Put("=== Price List ===");New_Line;
Put("Price without tax ");
Put("Tax ");
Put("Price with tax");
-- Local Variables --
First_Price := Forsta_Pris;
Last_Price := Sista_Pris;
Steps := Steg;
Tax_Percentage := Momsprocent;
Tax := Tax_percentage/First_Price;
Price_With_Tax := First_Price + Tax;
while First_Price <= Last_Price loop
New_Line;
Put(" ");
Put(First_Price, Aft => 2, Exp => 0);
Put(" ");
Put(Tax, Aft => 2, Exp => 0);
Put(" ");
Put(Price_With_Tax, Aft => 2, Exp => 0);
-- Iteration --
First_Price := First_Price + Steps;
Tax := First_Price/Tax_Percentage;
Price_With_Tax := First_Price + Tax;
end loop;
end Skriv_Ut;
-- Deklaration of Variables
Forsta_Pris: Float;
Sista_Pris: Float;
Steg: Float;
Momsprocent: Float;
Moms : Float;
begin
Hamta("Mata in första pris: ",Forsta_Pris);
Hamta("Mata in sista pris: ", Sista_Pris);
Hamta("Mata in Steg: ",Steg);
Hamta("Mata in Momsprocent: ",Moms);
Skriv_Ut(Forsta_Pris, Sista_Pris, Steg, Momsprocent);
end Momstabell;
问候 罗伯特
代码的快照会获得合理答案非常有用。 – kaza
优先复制/粘贴到快照。 Codepen/JsFiddle更喜欢复制/粘贴:) – admcfajn
你的问题是关于Ada,所以复制/粘贴。没有Javascript,所以没有JsFiddle,也可能没有Codepen。 –