Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-10-28 13:52:27

  Khamell - Użytkownik

Khamell
Użytkownik
Zarejestrowany: 2008-04-24

[Ada95] Obsługa wyjątków, czyszczenie bufora klawiatury

Witam! Czy jest jakis sposób na wyczyszczenie bufora klawiatury w Ada95? Programik zapętla się, gdy podam np. literę zamiast cyfry.

Kod:

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;

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.007 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00008 SET CHARSET latin2
0.00007 SET NAMES latin2
0.00120 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.224.52.108' WHERE u.id=1
0.00074 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.224.52.108', 1732337470)
0.00040 SELECT * FROM punbb_online WHERE logged<1732337170
0.00052 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=15333 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00128 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=15333 ORDER BY p.id LIMIT 0,25
0.00099 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=15333
Total query time: 0.00534 s