piszę program w ADA95 ktory ma pobrac 3 punkty sprawdzic czy trojkat o wierzcholkach w tych punktach jest niezdegenerowany (jego wszystkie wysokosci sa dodatnie = te punkty wszystkie 3 nie sa wspołliniowe) - dalej nie wazne co ma robi bo sobie porawdze problem polega na tym że niestety jak podam wszystkie 3 punkty z pierwsza wspolrzedna rowna 0 to on w IF zwraca FALSE i przechodzi do ELSE'a co jest dla mnie dziwne bo leza na tej samej prostej,
prosze o pomoc

with ada.text_io, ada.integer_text_io, ada.float_text_io;
use ada.text_io, ada.integer_text_io, ada.float_text_io;

procedure program_ada is
   
   -- typ punkt o wspolrzednych zmiennoprzecinkowych x i y
   type punkt is record
      x,y:float;
   end record;
   
   -- typ tablica_punktow to niezawezona tablica zmiennych typu punkt
   type tablica_punktow is array (integer range <>) of punkt;
   
   -- p to podtyp tablica_punktow, o sprecyzowanym rozmiarze
   p:tablica_punktow(1..4);
   
   a,b:float;
begin
   
   -- petla pobiera dane 3 punktow (stad 1..3 a nie p'range)
   for i in 1..3 loop
      put("Prosze podac wspolrzedna x punktu nr "); put(i); put(": ");
      get(p(i).x);
      put("Prosze podac wspolrzedna y punktu nr "); put(i); put(": ");
      get(p(i).y); 
      new_line(1);  
   end loop;
   
   
   -- funkcja sprawdzajaca czy jest to trojkat niezdegenerowany
   a:=(p(2).y - p(1).y)/(p(2).x - p(1).x);
   b:=p(1).y - a*p(1).x;
   
   if p(3).y = ( a*p(3).x + b ) then
      -- program nic nie robi jezeli 3 punkty leza na tej samej prostej
      null;
   else 
      
      put("Podaj wspolrzedna x punktu w celu sprawdzenia czy lezy w trojkacie: ");
      get(p(4).x);
      put("A teraz wspolrzedna y: ");
      get(p(4).y);
   
      -- funkcja sprawdzajaca czy punkt p4 lezy wewnatrz trojkata


   end if;

end program_ada;