Ada:检查除法结果是否为';t十进制数

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

我编写了我的第一个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.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。到目前为止您尝试了什么?你有什么策略来实现这样的目标?这只是家庭作业吗?