APP Kolokwium 2010 2011 Rozwiazania


Z L I
Z L
Z L
Z L
type Pan_Mlody is (Druciarz, Krawiec, Zolnierz, Marynarz, Bogacz, Biedak,
Zebrak, Zlodziej);
I
Pan_Mlody
N I N
O I I N = 10.
Pan_Mlody'Val((N-1) mod 8)
I I
Pan_Mlody'Val((N-1) mod (Pan_Mlody'Pos(Pan_Mlody'Last) +1))
I N = 10 Krawiec.
Z O I
Z
Z
Z
type Wind is (North, North_East, East, South_East, South, South_West,
West, North_West);
N I Przeciwne Prostopadle I
function Przeciwne (X : Wind; Y : Wind) return Boolean is
begin
return (Wind'Pos (X) - Wind'Pos (Y)) mod 8 = 4;
end Przeciwne;
function Prostopadle (X : Wind; Y : Wind) return Boolean is
begin
return (Wind'Pos (X) - Wind'Pos (Y)) mod 4 = 2;
end Prostopadle;
Z L Z
Z L
Z L
Z L
X, Y : Integer; -- To jest deklaracja
..
if (X > (Y + 10)) and (X /= Y) then
..
X,Y
if (X > (Y + 10)) then -- Je eli pierwszy warunek jest
-- prawdziwy, to drugi te .
Z N
Z
Z
Z
Poziom : Natural;
..  - Obliczamy Poziom
if Poziom < 100 then
Put (Item => "Poziom niski");
elsif Poziom < 200 then
Put (Item => "Poziom sredni");
elsif Poziom < 300 then
Put (Item => "Poziom wysoki");
else
Put (Item => "Alarm");
end if;
Z
case Poziom is
when 0..99 => Put (Item => "Poziom niski");
when 100..199 => Put (Item => "Poziom sredni");
when 200..299 => Put (Item => "Poziom wysoki");
when others => Put (Item => "Alarm");
end case;
Z Z I for na I while
Z
Z
Z
for Licznik in 1..10 loop
Put ("Licznik petli = ");
Put (Licznik);
end loop;
Licznik : Integer range 1..11 := 1;
..
while Licznik < 11 loop
Put ("Licznik petli = ");
Put (Licznik);
Licznik := Licznik + 1;
end loop;
Z L I while I I
Z L
Z L
Z L
I 2 1..10000.
Potega := 1;
while Potega < 10000 loop
Ada.Integer_Text_IO.Put (Item => Potega, Width => 5);
Potega := Potega * 2;
end loop;
Z I I
Potega := 1;
loop
exit when Potega >= 10000;
Ada.Integer_Text_IO.Put (Item => Potega, Width => 5);
Potega := Potega * 2;
end loop;
Z I
Z
Z
Z
Max_Size : constant := 30;
subtype Index_Range is Integer range 1..Max_Size;
type Name_String is array (Index_Range) of Character;
:
First_Name : Name_String;
N I First_Name
'A' . Put
I I 14
I First_Name.
First_Name(1) := 'A';
Ada.Text_IO.Put (First_Name(14));
Z L N I
Z L
Z L
Z L
type Tablica_Napisow_4D is array (Positive range <>) of String (1..4);
Kura, Pies, Koza Owca. Z I
Zwierzeta
N Psa Biesa.
Zwierzeta : Tablica_Napisow_4D := ("Kura", "Pies", "Koza", "Owca");
:
Zwierzeta (2)(1) := 'B';
-- albo
Zwierzeta (2) := "Bies";
Z I
Z
Z
Z
type Matrix is array (Integer range < >, Integer range < >) of Float;
Create_Unit_Matrix, I
N× N I I
I Unit_Matrix_N N × N.
function Create_Unit_Matrix (N : Positive) return Matrix is
M : Matrix (1..N, 1..N);
begin
for I in 1..N loop
for J in 1..N loop
if I = J then
M(I,J) := 1.0;
else
M(I,J) := 0.0;
end loop;
end loop;
return M;
end Create_Unit_Matrix;
..
Unit_Matrix_N : constant Matrix := Create_Unit_Matrix(N);
Z L N I
Z L
Z L
Z L
type Wektor_6 is array (1..6) of Float;
type Macierz_3_Na_6 is array (1..3) of Wektor_6;
M : Macierz_3_Na_6;
N
I M.
M (1..2) := (M(2), M(1));
Z L I I M " N "
Z L
Z L
Z L
I
I M " N
J I N = 1 M " N = M,
M " N = M +M "(N -1).
N Mnozenie I I
function Mnozenie (M : in Integer; N : in Positive) return Integer is
Wynik : Integer;
begin
if N = 1 then
Wynik := M; -- Przypadek podstawowy
else
Wynik := M + Mnozenie (M, N-1); -- Rekurencja
end if;
return Wynik;
end Mnozenie;
Z N Suma_Kwadratow I
Z
Z
Z
N I
N Oblicz_Sume_Kwadratow
Suma_Kwadratow.
function Suma_Kwadratow (N : in Positive) return Positive is
-- Funkcja oblicza sum kwadratów pierwszych N liczb
-- całkowitych, dodatnich
Suma : Integer := 0;
Licznik : Positive := 1;
begin
while Licznik <= N loop
Suma := Suma + Licznik*Licznik;
Licznik := Licznik + 1;
end loop;
return Suma;
end Suma_Kwadratow;
procedure Oblicz_Sume_Kwadratow (N : in Positive; S : out Positive) is
-- Procedura oblicza sum kwadratów pierwszych N liczb
-- całkowitych, dodatnich
Suma : Integer := 0;
Licznik : Positive := 1;
begin
while Licznik <= N loop
Suma := Suma + Licznik*Licznik;
Licznik := Licznik + 1;
end loop;
S := Suma;
end Oblicz_Sume_Kwadratow;
Z L T Complex I I I
Z L
Z L
Z L
type Complex is record
Re : Float;
Im : Float;
end record;
Z I I I  1.
Z I Zero Jeden I
I I I
N "+" "*" I I I Complex.
I : constant Complex := (Re => 0.0, Im => 1.0);
Zero : constant Complex := (Re => 0.0, Im => 0.0);
Jeden : constant Complex := (Re => 1.0, Im => 0.0);
function "+" (A, B : Complex) return Complex is
C : Complex;
begin
C.Re := A.Re + B.Re;
C.Im := A.Im + B.Im;
return C;
end "+";
function "*" (A, B : Complex) return Complex is
C : Complex;
begin
C.Re := A.Re*B.Re - A.Im*B.Im;
C.Im := A.Re*B.Im + A.Im*B.Re;
return C;
end "*";
Z T Complex I I I
Z
Z
Z
type Complex is record
Re : Float;
Im : Float;
end record;
N Re_Part, Im_Part Adjoint I
I I I Complex.
function Adjoint (X : Complex) return Complex is
C : Complex;
begin
C.Re := X.Re;
C.Im := -X.Im;
return C;
end Conjugate;
function Re_Part (X : Complex) return Float is
begin
return X.Re;
end Re_Part;
function Im_Part (X : Complex) return Float is
begin
return X.Im;
end Im_Part;


Wyszukiwarka