with text_io,integer_io; use text_io,integer_io;
with Standard_Floating_Numbers_io; use Standard_Floating_Numbers_io;
package body Numbers_io is
procedure Read_Positive ( p : out positive ) is
begin
get(p); skip_line;
exception
when DATA_ERROR | CONSTRAINT_ERROR =>
skip_line; -- skip the rubbish
put("This is not a positive number, try again : ");
Read_Positive(p);
end Read_Positive;
procedure Read_Natural ( n : out natural ) is
begin
get(n); skip_line;
exception
when DATA_ERROR | CONSTRAINT_ERROR =>
skip_line; -- skip the rubbish
put("This is not a natural number, try again : ");
Read_Natural(n);
end Read_Natural;
procedure Read_Integer ( i : out integer ) is
begin
get(i); skip_line;
exception
when DATA_ERROR | CONSTRAINT_ERROR =>
skip_line; -- skip the rubbish
put("This is not an integer number, try again : ");
Read_Integer(i);
end Read_Integer;
procedure Read_Single_Float ( f : out single_float ) is
begin
get(f); skip_line;
exception
when DATA_ERROR | CONSTRAINT_ERROR =>
skip_line; -- skip the rubbish
put("This is not a floating point number, try again : ");
Read_Single_Float(f);
end Read_Single_Float;
procedure Read_Double_Float ( f : out double_float ) is
begin
get(f); skip_line;
exception
when DATA_ERROR | CONSTRAINT_ERROR =>
skip_line; -- skip the rubbish
put("This is not a floating point number, try again : ");
Read_Double_Float(f);
end Read_Double_Float;
end Numbers_io;