DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦fa277130e⟧ TextFile

    Length: 2626 (0xa42)
    Types: TextFile
    Names: »B«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with Text_Io;
package body Square is
    procedure Deposit (Carre : in out Matrix;
                       Coordonnees : in out Case_Courrante;
                       I : in Integer;
                       Nombre : in Integer) is
    begin
        if (Carre (Coordonnees.X, Coordonnees.Y) = 0) then
            Carre (Coordonnees.X, Coordonnees.Y) := I;
        else
            Move (North, Coordonnees, Nombre);
            Move (West, Coordonnees, Nombre);
            Deposit (Carre, Coordonnees, I, Nombre);
        end if;
    end Deposit;

    procedure Move (D : in Direction;
                    Coordonnees : in out Case_Courrante;
                    Nombre : in Integer) is  
    begin  
        case D is
            when North =>
                Coordonnees.Y := Coordonnees.Y + 1;  
                if (Coordonnees.Y > Nombre) then
                    Coordonnees.Y := 1;  
                end if;
            when South =>
                Coordonnees.Y := Coordonnees.Y - 1;
                if (Coordonnees.Y < 1) then
                    Coordonnees.Y := Nombre;
                end if;
            when East =>
                Coordonnees.X := Coordonnees.X + 1;
                if (Coordonnees.X > Nombre) then
                    Coordonnees.X := 1;
                end if;
            when West =>
                Coordonnees.X := Coordonnees.X - 1;
                if (Coordonnees.X < 1) then
                    Coordonnees.X := Nombre;
                end if;

        end case;
    end Move;

    procedure Go_To_Center (Coordonnees : in out Case_Courrante;
                            Nombre : in Integer) is
    begin
        Coordonnees.X := (Nombre / 2) + 1;
        Coordonnees.Y := (Nombre / 2) + 1;
    end Go_To_Center;

    function Impaire (Nombre : in Integer) return Boolean is
    begin  
        return ((Nombre mod 2) = 1);
    end Impaire;

    procedure Display (Carre : in Matrix; Nombre : in Integer) is
        I, J : Integer;
    begin
        for I in reverse 1 .. Nombre loop
            for J in 1 .. Nombre loop
                Text_Io.Put (Integer'Image (Carre (J, I)));
            end loop;
            Text_Io.New_Line;
        end loop;
        Text_Io.New_Line;
    end Display;

    procedure Init_Square (Carre : in out Matrix; Nombre : in Integer) is
        I, J : Integer;
    begin
        for I in 1 .. Nombre loop
            for J in 1 .. Nombre loop
                Carre (I, J) := 0;
            end loop;
        end loop;
    end Init_Square;

    procedure Saisie (Nombre : in out Integer) is
    begin  
        Nombre := 3;  
    end Saisie;
end Square;