Witam! Podobny temat był już na forum http://4programmers.net/Forum/viewtopic.php?id=61458 i zastosowałem (chyba) taki samo sposób, jak rozwiązanie tam podane. Jednakże mój program zapętla się po podaniu innej wartości niż liczba rzeczywista:

WITH Ada.Text_IO;
USE Ada.Text_IO;
WITH Ada.Float_Text_IO;
USE Ada.Float_Text_IO;
WITH Ada.IO_Exceptions;
USE Ada.IO_Exceptions;
PROCEDURE Rownanie IS
   --program pobiera od uzytkownika dwa rownania postaci Ax+By+C=0 i Dx+Ey+F=0
   --po czym metoda macierzowa sprawdza ilosc rozwiazan
   --i ewentualnie wypisuje rozwiazania jednoznaczne
   Wsp_A1,
   Wsp_B1,
   Wsp_C1,
   Wsp_A2,
   Wsp_B2,
   Wsp_C2   : Float   := 0.0;
   Wyroznik,
   Rozw1,
   Rozw2,
   Det1,
   Det2     : Float;
   Koniec   : Boolean := False;
   PROCEDURE Petla_Programu IS
   BEGIN
      WHILE Koniec = False LOOP
         BEGIN

            Put("Do wykonania programu koniecznie jest wprowadzenie dwoch rownan liniowych postaci Ax+By+C=0 i Dx+Ey+F=0");
            New_Line;
            --wczytanie danych do rownan
            Put("Podaj wspolczynnik przy x dla pierwszego rownania: ");
            Get(Wsp_A1);
            Put("Podaj wspolczynnik przy y dla pierwszego rownania: ");
            Get(Wsp_B1);
            Put("Podaj wyraz wolny dla pierwszego rownania: ");
            Get(Wsp_C1);
            Put("Podaj wspolczynnik przy x dla drugiego rownania: ");
            Get(Wsp_A2);
            Put("Podaj wspolczynnik przy y dla drugiego rownania: ");
            Get(Wsp_B2);
            Put("Podaj wyraz wolny dla drugiego rownania: ");
            Get(Wsp_C2);
            New_Line(2);
            Put("Pierwsze rownananie ma postac: ");
            --zilustrowanie postaci rownań (wypisanie ich na standardowe urzadzenie wyjsciowe):
            Put(Wsp_A1,1,1,0);
            Put("x");
            IF Wsp_B1> 0.0 THEN
               Put("+");
            END IF;
            Put(Wsp_B1,1,1,0);
            Put("y");
            IF Wsp_C1>0.0 THEN
               Put("+");
            END IF;
            Put(Wsp_C1,1,1,0);
            Put("=0.0");
            New_Line(2);
            Put("Drugie rownanie ma postac: ");

            Put(Wsp_A2,1,1,0);
            Put("x");
            IF Wsp_B2> 0.0 THEN
               Put("+");
            END IF;
            Put(Wsp_B2,1,1,0);
            Put("y");
            IF Wsp_C2>0.0 THEN
               Put("+");
            END IF;
            Put(Wsp_C2,1,1,0);
            Put("=0.0");
            New_Line(2);
            --obliczenie wyznacznika macierzy kwadratowej
            Wyroznik:=Wsp_A1*Wsp_B2-Wsp_B1*Wsp_A2;
            IF Wyroznik /= 0.0 THEN
               --obliczenie wyznacznikow macierzy powstalych po podstawieniu kolumny wyrazow wolnych w odpowiednie kolumny
               Det1:=(-Wsp_C1)*Wsp_B2-Wsp_B1*(-Wsp_C2);
               Det2:=Wsp_A1*(-Wsp_C2)-(-Wsp_C1)*Wsp_A2;
               --obliczenie rozwiazan
               Rozw1:=Det1/Wyroznik;
               Rozw2:=Det2/Wyroznik;
               Put("Poniewaz wyznacznik jest rowny: ");
               Put(Wyroznik,2,3,3);
               New_Line;
               Put("Rozwiazaniami rownania sa x rowne ");
               Put(Rozw1);
               Put(" i y rowne ");
               Put(Rozw2);
            ELSE
               Put("Rownanie nie ma rozwiazan jednoznacznych");
            END IF;
            Koniec:=True;
            --obsluga bledow:
         EXCEPTION
            WHEN Constraint_Error=>
               Put("Podales liczby o zbyt duzych lub zbyt malych wartosciach");
            WHEN Ada.IO_Exceptions.Data_Error=>
               Put("Wprowadziles niepoprawne dane");
               New_Line;
               Put("Nastapi zakonczenie programu");
            WHEN OTHERS=>
               Put("Wystapil nieznany blad i nastapi zakonczenie programu");
         END;




      END LOOP;
   END Petla_Programu;

BEGIN
   Petla_Programu;
END Rownanie;

Czy można w Ada 95 jakoś wyczyścić bufor klawiatury? Czy może trzeba jakiś inny "myk" zastosować? Bo chyba to jest powodem zapętlania się programu. Z góry dziękuję za pomoc.