algorytm.org

Implementacja w Ada



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Przynależność punktu do odcinka - Implementacja w Ada
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
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;
Dodaj komentarz