ada
Zahlen ausgeben
Suche…
Einführung
Die Standardpakete von Ada ermöglichen die Ausgabe aller numerischen Typen. Das Ausgabeformat kann auf viele Arten angepasst werden.
Bemerkungen
Beachten Sie, wie jedes Mal ein generisches Paket mit einem numerischen Typ instanziiert wird. Auch gibt es die beiden Standardwerte für die gesamte Instanz festgelegt werden, und auch Möglichkeiten , außer Kraft zu setzen Width , sagen wir, wenn Sie anrufen Put Sie mit diesem Parameter.
Ganzzahlen mit großzügigem Platzbedarf drucken
Integer_IO von Integer_IO verfügen über eine Einstellungsvariable Default_Width die die Anzahl der Zeichen, die jede Ausgabennummer benötigt.
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;
Ergebnis
-1000000
-500000
0
500000
Ganzzahlen drucken, Basis 16 (Hexadezimal) verwenden
Eine Einstellungsvariable Default_Base wird für die Instanz von Ada.Text_IO.Integer_IO . Außerdem ist Default_Width so festgelegt, dass die Ausgabe keinen führenden Platz haben kann.
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;
Ergebnis
-16#F4240#
-16#7A120#
16#0#
16#7A120#
Dezimale Festkommazahlen, auch bekannt als Money
Ada.Text_IO.Editing bietet die Formatierung dezimaler Festkommawerte unter Verwendung von "Bildfolgen" an. Diese beschreiben die Ausgabe mit „magischen“ Zeichen für Trennzeichen, Währungszeichen usw.
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;
Ergebnis
BANANA | CHF 1'919.40
ORANGE | CHF 11'951.00
PEAR | (CHF 2'100.00)
Mehrere Artikel in einer Zeile drucken
Kombinieren Sie die Instanzen der _IO Pakete, verwenden Sie die rechte Instanz mit ihrem numerischen Typ.
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;
Ergebnis
BANANA | 27420
ORANGE | 140600
PEAR | -10000