Ocena użytkownikóww: ***** / 2
Nadesłany przez Tomasz Lubiński, 03 sierpnia 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Odcinek.adb:
--
-- Program sprawdza, czy punkt nalezy do odcinka
-- Program pobrano ze strony www.algorytm.org
-- (c)2006 Tomasz Lubinski
--
with Text_IO;
use Text_IO;
procedure Odcinek is
type point is record
x: Integer;
y: Integer;
end record;
det: Integer; -- wyznacznik macierzy
points : array (1..3) of point; -- tablica wspolrzednych punktow
s: String := " ";
ptr: Integer := 0;
begin
-- Wprowadzanie wspolrzednych punktow
for i in points'range loop
Put_Line("Punkt " & Integer'Image(i));
Put_Line("x = ");
s := " ";
Get_Line(s, ptr);
points(i).x := Integer'Value(s);
Put_Line("y = ");
s := " ";
Get_Line(s, ptr);
points(i).y := Integer'Value(s);
end loop;
-- Oblicznie wyznacznika macierzy
det := points(1).x*points(2).y + points(2).x*points(3).y + points(3).x*points(1).y -
points(3).x*points(2).y - points(1).x*points(3).y - points(2).x*points(1).y;
-- Sprawdzanie wspolliniowosci:
if det /= 0 then
Put_Line("Punkt #3 nie nalezy do odcinka #1-#2: brak wspolliniowosci");
elsif Integer'min(points(1).x, points(2).x) <= points(3).x and then
points(3).x <= Integer'max(points(1).x, points(2).x) and then
Integer'min(points(1).y, points(2).y) <= points(3).y and then
points(3).y <= Integer'max(points(1).y, points(2).y) then
Put_Line("Punkt #3 nalezy do odcinka #1-#2");
else
Put_Line("Punkt #3 NIE nalezy do odcinka #1-#2");
end if;
end;