Ada:检查除法结果是否为';t十进制数
我编写了我的第一个ada程序,其中包括一个条件,即检查一个值除以一个特定的数字是否没有小数部分: 例如:Ada:检查除法结果是否为';t十进制数,ada,Ada,我编写了我的第一个ada程序,其中包括一个条件,即检查一个值除以一个特定的数字是否没有小数部分: 例如: 10 / 3 = 3.3333334 >> Wrong 12 / 2 = 6 >> Okay 45 / 5 = 9 >> Okay ... 但是我找不到任何函数来做它。。。 这是我的代码: with Ada.Text_IO, Ada.Integer_Text_IO ; use Ada.Text_IO, Ada.Intege
10 / 3 = 3.3333334 >> Wrong
12 / 2 = 6 >> Okay
45 / 5 = 9 >> Okay
...
但是我找不到任何函数来做它。。。
这是我的代码:
with Ada.Text_IO, Ada.Integer_Text_IO ;
use Ada.Text_IO, Ada.Integer_Text_IO ;
procedure main is
...
testing : Natural := 0 ;
...
begin
...
if testing/i = ??? then -- if testing/i haven't decimal part --
...
end if ;
...
end main ;
这可能会起作用:
main.adb
with Ada.Text_IO;
procedure Main is
procedure Test_Remainder (X, Y : Integer) is
use Ada.Text_IO;
begin
-- Optional: add some test for Y being non-zero here...
Put (X'Image & " / " & Y'Image & " ==> ");
if (X rem Y = 0) then
Put_Line ("Okay");
else
Put_Line ("Wrong");
end if;
end Test_Remainder;
begin
Test_Remainder (10, 3);
Test_Remainder (12, 2);
Test_Remainder (45, 5);
end Main;
输出
10 / 3 ==> Wrong
12 / 2 ==> Okay
45 / 5 ==> Okay
注:有关
mod
和rem
之间的区别,请参见,例如,过程内部的过程是否等同于定义?您始终可以在另一个过程的声明部分(即is
和begin
之间)定义一个过程(子程序)。这些被称为嵌套子程序。它们的可见性范围是定义它们的子程序(在这种情况下,Test\u restine
的可见性范围是Main
)。另请参见上的“嵌套子程序”。您尚未解释您的解决方案。它是如何找到分数部分的?@Vovanium:嗯,我不计算分数部分。我只是测试(整数)除法是否产生余数(使用rem
操作符)。如果是,则浮点除法的结果将不是整数,而是小数部分。在您的示例中:10/3=3(商)带余数1,12/2=6带余数0,45/5=9带余数0。到目前为止您尝试了什么?你有什么策略来实现这样的目标?这只是家庭作业吗?