Zajęcia
Transkrypt
Zajęcia
Najpierw lektura obowiązkowa: http://prac.us.edu.pl/~siminski/c_cxx/c_cxx_w05.pdf i obowiązkowe programy w ramach wykładu: http://prac.us.edu.pl/~siminski/c_cxx/cwiczenia05p.pdf Potem programy do wykonania samemu na ocenę: Zadanie 1 „Równanie kwadratowe” Dane jest równanie kwadratowe: Ax2 + Bx + Cx = 0 Należy napisać funkcje wyznaczające deltę, pojedynczy pierwiastek, pierwiastki podwójne. Funkcja obliczająca deltę: float delta( float a, float b, float c ); Funkcja obliczająca pierwiastek podwójny (delta równa zero): float x0( float a, float b, float c ); Funkcja obliczająca dwa pierwiastki (delta większa od zera): float x1( float a, float b, float c, float delta ); float x2( float a, float b, float c, float delta ); Proszę napisać program rozwiązujący równanie kwadratowe w oparciu o te funkcje. Zadanie 2 „pola figur płaskich” Napisz program obliczający pola figur płaskich, aby udawał wersje demo, pozwalającą na wywołanie każdej opcji tylko trzy razy. Należy to zrealizować poprzez wprowadzenie do każdej z funkcji obsługujących opcje menu, liczników liczby wywołań w postaci zmiennych statycznych (zobacz materiał wykładowy). Zadanie 3 „Obliczanie pól — wersja wielomodułowa” Zmodyfikuj program obliczający pola figur płaskich tak , aby funkcje obliczające pola figur były zawarte w oddzielnym module o nazwie pola.cpp. Prototypy tych funkcji powinny zostać umieszczone w pliku nagłówkowym pola.hpp. Program główny, zawierający funkcję main powinien zostać umieszczony w pliku glowny.cpp. Przykład w materiałach wykładowych. Proszę założyć projekt odpowiednio do wykorzystywanego środowiska lub dokonać kompilacji rozłącznej programu korzystając z kompilatora a linii poleceń. Zadanie 4 „kapitalizacja odsetek” Napisz funkcję, która dla zadanej rocznej stopy procentowej, i całkowitej ilości lat obliczy czynnik kapitalizujący w procencie składanym z kapitalizacją co roku. Napisz program, który zapyta o saldo początkowe, stopę procentową oraz ilość lat, a następnie, korzystając z powyższej funkcji, będzie w stanie wyświetlić w konsoli saldo końcowe konta oszczędnościowego po zadanej ilości lat, przy założeniu stałej stopy procentowej. Przykład wyniku: 10000 odłożone na 3 lata na 5.0% da na koniec 11576.25. Zadanie 5 Napisz funkcję rozwiązującą następujące zadanie: pewna osoba co roku oszczędza pewną sumę i odkłada ją na rachunek bankowy, z którego niczego nie wypłaca. Osoba ta planuje co rok zwiększać o stałą kwotę sumę swoich oszczędności odkładanych z początkiem roku na rachunek bankowy z roczną kapitalizacją odsetek (przykładowo, w pierwszym roku odłoży 1000, w drugim do skapitalizowanych poprzednich oszczędności dołoży dodatkowe 1050, w trzecim dołoży dodatkowe 1100 itd.). Zakładamy, że stopa procentowa jest przez cały czas taka sama. Osoba ta potrzebuje odpowiedzi na pytanie ile lat powinna oszczędzać, aby zgromadzić kapitał w zadanej wysokości. Napisz funkcję obliczającą odpowiedź. Możesz skorzystać z funkcji z zadania nr 4. Napisz program demonstrujący jej działanie dla danych wprowadzonych przez użytkownika. Przykład działania: Założenia: 1. Co roku klient banku wpłaca o stałą kwotę więcej. Np. 50 zł (czyli w 1 roku 1000, w 2 roku 1050, w 3 roku 1100zł itd.) 2. Stopa procentowa jest taka sama np. 5 % 3. Jeśli więc założy, że chce uzbierać 3450 zł to będzie musiał oszczędzać 3 lata, bo po 3 latach jego konto będzie zawierało kwotę min. 3450 zł. Zadanie 6 Napisz program, który przy pomocy zagnieżdżonych pętli wypisze na ekran tabliczkę mnożenia dla liczb 1,2,3: 123 1123 2246 3369 Zadanie 7 Napisz funkcję, która wyświetli wszystkie długości boków i wszystkie wielkości kątów (w stopniach) trójkąta prostokątnego dla dwóch argumentów: długości przyprostokątnej oraz wielkości kąta (w stopniach) nieprzylegającego do tej przyprostokątnej. Zadanie 8 Napisz funkcję, która wyświetli cyfry zadanej liczby naturalnej, rozdzielone przecinkami. Zadania dodatkowe Zadanie 9 „Obliczanie pól — makra zamiast funkcji” Zmodyfikuj program obliczający pola figur płaskich z punktu poprzedniego tak, by obliczenia realizowały makra (np. #define POLE_KOLA(R) ) a nie funkcje. Proszę spróbować napisać program testujący różnicę czasów wykonania wielokrotnie powtarzanych obliczeń dla wersji z funkcjami i z makrami. Czy testy praktyczne potwierdzają, że marka są szybsze?