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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam! Czy jest jakis sposób na wyczyszczenie bufora klawiatury w Ada95? Programik zapętla się, gdy podam np. literę zamiast cyfry.
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
Strony: 1