ada
Getallen uitvoeren
Zoeken…
Invoering
De standaardpakketten van Ada bieden uitvoer van alle numerieke typen. Het uitvoerformaat kan op vele manieren worden aangepast.
Opmerkingen
Merk op hoe elke keer een generiek pakket wordt geïnstantieerd met een numeriek type. Er zijn ook beide standaardwaarden die voor de hele instantie moeten worden ingesteld, en ook manieren om de Width te overschrijven, bijvoorbeeld wanneer u Put met deze parameter aanroept.
Print gehele getallen, royaal met behulp van ruimte
Integer_IO van Integer_IO hebben een instellingsvariabele Default_Width die het aantal tekens dat elk uitvoernummer zal nemen.
with Ada.Text_IO; use Ada.Text_IO;
procedure Print_Integer is
subtype Count is Integer range -1_000_000 .. 1_000_000;
package Count_IO is new Integer_IO (Count);
X : Count;
begin
Count_IO.Default_Width := 12;
X := Count'First;
while X < Count'Last loop
Count_IO.Put (X);
Count_IO.Put (X + 1);
New_Line;
X := X + 500_000;
end loop;
end Print_Integer;
Resultaat
-1000000
-500000
0
500000
Print gehele getallen, met behulp van Base 16 (hexadecimaal)
Een instellingsvariabele Default_Base wordt ingesteld op het exemplaar van Ada.Text_IO.Integer_IO ; ook is Default_Width zo ingesteld dat uitvoer geen voorloopruimte kan hebben.
with Ada.Text_IO; use Ada.Text_IO;
procedure Print_Hex is
subtype Count is Integer range -1_000_000 .. 1_000_000;
package Count_IO is new Integer_IO (Count);
X : Count;
begin
Count_IO.Default_Width := 1;
Count_IO.Default_Base := 16;
X := Count'First;
while X < Count'Last loop
Count_IO.Put (X);
New_Line;
X := X + 500_000;
end loop;
end Print_Hex;
Resultaat
-16#F4240#
-16#7A120#
16#0#
16#7A120#
Decimale cijfers met vaste punten afdrukken, ook bekend als Money
Ada.Text_IO.Editing biedt opmaak decimale vaste puntwaarden met behulp van " Ada.Text_IO.Editing ". Deze beschrijven uitvoer met behulp van "magische" tekens voor scheidingstekens, valutatekens, enz.
with Ada.Text_IO.Editing; use Ada.Text_IO;
procedure Print_Value is
Max_Count : constant := 1_000_000;
type Fruit is (Banana, Orange, Pear);
subtype Count is Integer range -Max_Count .. +Max_Count;
type Money is delta 0.001 digits 10;
package Fruit_IO is new Enumeration_IO (Fruit);
package Money_IO is new Editing.Decimal_Output
(Money,
Default_Currency => "CHF",
Default_Separator => ''');
Inventory : constant array (Fruit) of Count :=
(Banana => +27_420,
Orange => +140_600,
Pear => -10_000);
Price_List : constant array (Fruit) of Money :=
(Banana => 0.07,
Orange => 0.085,
Pear => 0.21);
Format : constant Editing.Picture :=
Editing.To_Picture ("<###BZ_ZZZ_ZZ9.99>");
begin
Fruit_IO.Default_Width := 12;
for F in Inventory'Range loop
Fruit_IO.Put (F);
Put (" | ");
Money_IO.Put (Item => Inventory (F) * Price_List (F),
Pic => Format);
New_Line;
end loop;
end Print_Value;
Resultaat
BANANA | CHF 1'919.40
ORANGE | CHF 11'951.00
PEAR | (CHF 2'100.00)
Meerdere items op één regel afdrukken
Combineer de instanties van de _IO pakketten, gebruik de juiste met het numerieke type.
with Ada.Text_IO; use Ada.Text_IO;
procedure Print_Inventory is
type Fruit is (Banana, Orange, Pear);
subtype Count is Integer range -1_000_000 .. 1_000_000;
package Fruit_IO is new Enumeration_IO (Fruit);
package Count_IO is new Integer_IO (Count);
Inventory : constant array (Fruit) of Count :=
(Banana => 27_420,
Orange => 140_600,
Pear => -10_000);
begin
Fruit_IO.Default_Width := 12;
for F in Inventory'Range loop
Fruit_IO.Put (F);
Put (" | ");
Count_IO.Put (Inventory (F));
New_Line;
end loop;
end Print_Inventory;
Resultaat
BANANA | 27420
ORANGE | 140600
PEAR | -10000