|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 7168 (0x1c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Carre, seg_058aa7
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Text_Io; package body Carre is package Dimension_Io is new Text_Io.Integer_Io (Dimension); package Dimension_Chiffres_Io is new Text_Io.Integer_Io (Dimension_Chiffres); function Cherche_Taille return Dimension is Taille : Dimension; begin Text_Io.Put (" Entrez la taille du carre (nombre impair): "); Dimension_Io.Get (Taille); return Taille; end Cherche_Taille; procedure Initialiser (Tableau : in out Object; Taille_Carre : in Dimension) is A, B : Integer; begin for A in 1 .. Taille_Carre loop for B in 1 .. Taille_Carre loop Tableau.Valeurs (A, B) := 0; end loop; end loop; end Initialiser; procedure Va_Au_Centre (Taille_Carre : in Dimension; Valeur_X, Valeur_Y : in out Integer) is begin Valeur_X := (Taille_Carre + 1) / 2; Valeur_Y := (Taille_Carre + 1) / 2; end Va_Au_Centre; procedure Deplacer (Taille_Carre : in Dimension; La_Direction : in Direction; Valeur_X, Valeur_Y : in out Integer) is begin if La_Direction = Nord then Valeur_X := Valeur_X - 1; end if; if La_Direction = Nord_Est then if (Valeur_Y = Taille_Carre) then Valeur_Y := 1; else Valeur_Y := Valeur_Y + 1; end if; if (Valeur_X = 1) then Valeur_X := Taille_Carre; else Valeur_X := Valeur_X - 1; end if; end if; if La_Direction = Nord_Ouest then if (Valeur_Y = 1) then Valeur_Y := Taille_Carre; else Valeur_Y := Valeur_Y - 1; end if; if (Valeur_X = 1) then Valeur_X := Taille_Carre; else Valeur_X := Valeur_X - 1; end if; end if; end Deplacer; procedure Depose (La_Valeur : in Dimension_Chiffres; Tableau : in out Object; Valeur_X, Valeur_Y : in Integer) is begin Tableau.Valeurs (Valeur_X, Valeur_Y) := La_Valeur; end Depose; procedure Creer (Taille_Carre : in Dimension; Tableau : in out Object) is Position_X, Position_Y : Integer; Valeur_A_Deposer : Dimension_Chiffres := 1; Aller_Au : Direction := Nord; begin Initialiser (Tableau, Taille_Carre); Va_Au_Centre (Taille_Carre, Position_X, Position_Y); Deplacer (Taille_Carre, Aller_Au, Position_X, Position_Y); Depose (Valeur_A_Deposer, Tableau, Position_X, Position_Y); for Valeur_A_Deposer in 2 .. (Taille_Carre * Taille_Carre) loop Deplacer (Taille_Carre, Nord_Est, Position_X, Position_Y); if Tableau.Valeurs (Position_X, Position_Y) /= 0 then Deplacer (Taille_Carre, Nord_Ouest, Position_X, Position_Y); end if; Depose (Valeur_A_Deposer, Tableau, Position_X, Position_Y); end loop; end Creer; procedure Affiche (Taille_Carre : in Dimension; Tableau : in Object) is A, B : Integer; begin Text_Io.New_Line; Text_Io.Put_Line (" ---- Carre Magique ----"); Text_Io.New_Line; for A in 1 .. Taille_Carre loop for B in 1 .. Taille_Carre loop Dimension_Chiffres_Io.Put (Item => Tableau.Valeurs (A, B)); end loop; Text_Io.New_Line; end loop; Text_Io.New_Line; Text_Io.Put_Line (" ---- Fin du Carre Magique ----"); end Affiche; end Carre;
nblk1=6 nid=6 hdr6=8 [0x00] rec0=22 rec1=00 rec2=01 rec3=052 [0x01] rec0=1f rec1=00 rec2=05 rec3=01a [0x02] rec0=1a rec1=00 rec2=03 rec3=04e [0x03] rec0=1a rec1=00 rec2=04 rec3=000 [0x04] rec0=18 rec1=00 rec2=06 rec3=000 [0x05] rec0=44 rec1=65 rec2=25 rec3=09e tail 0x21766732e88d13dc4c2e5 0x42a00088462060003 Free Block Chain: 0x6: 0000 00 02 03 34 80 47 20 20 20 20 20 20 20 20 20 20 ┆ 4 G ┆ 0x2: 0000 00 00 00 05 80 02 20 20 02 03 00 1b 20 20 20 20 ┆ ┆