Zadania na zaliczenie zaj ęć z przedmiotu Kurs C/C++ na ZSI, grupa 3 Warunkiem otrzymania zaliczenia z przedmiotu jest zrobienie pewnej ilo ś ci z poni ż szych zada ń (wymagana jest przy tym znajomo ść zasady działania oddawanych programów i nale ż y by ć przygotowanym na ewentualnie pytania dotycz ą ce tego zagadnienia oraz konieczno ść wprowadzenia pewnych modyfikacji do oddawanych programów) oraz pozytywne zaliczenie testu ze znajomo ś ci podstaw j ę zyka C. Wymagania: * Na ocen ę dostateczn ą : Wybrane trzy zadania spo ś ród zada ń 1--5 w j ę zyku C oraz wybrane (jedno) z zada ń 11--13 w j ę zyku C++. * Na ocen ę dobr ą : Wybrane cztery zadania spo ś ród zada ń 3--10 w j ę zyku C oraz wybrane (jedno) z zada ń 11--13 w j ę zyku C++. Ponadto zaliczenie kolokwium z odpowiednio dobrym wynikiem (lub zwolnienie z niego). * Na ocen ę bardzo dobr ą : Wybrane cztery z zada ń 5--10 w j ę zyku C, oraz wybrane (jedno) z zada ń 14--16 w j ę zyku C++. Ponadto zaliczenie kolokwium z odpowiednio dobrym wynikiem (lub zwolnienie z niego). W przypadku osób które: * systematycznie pracowały na zaj ę ciach, * systematycznie oddawały programy, * oddawały programy wyró ż niaj ą ce si ę (w pozytywnym sensie) pod wzgl ę dem zastosowanych rozwi ą za ń , dopracowania sytuacji wyj ą tkowych, itp. zastrzegam sobie mo ż liwo ść obni ż enia wymaga ń Zastrzegam sobie równie ż mo ż liwo ść modyfikacji zada ń z C++ o ile pojawiš na wykładzie pojawiš si ę przykłady bardzo podobne do nich oraz ewentualnego powi ę kszenia zastawu zada ń do wyboru (z C++) o ile spotkam si ę z takimi sugestiami ze strony słuchaczy. Zadanie 1 Korzystaj ą c z algorytmu sita Eratostenesa napisz program wypisuj ą cy wszystkie liczby pierwsze mniejsze od wczytanej liczby całkowitej. Zadanie 2 Napisz program wyliczaj ą cy NWD dwóch liczb naturalnych. W programie nale ż y zaimplementowa ć funkcj ę odpowiedzialn ą za wyliczanie NWD. Zadanie 3 Napisz program zliczaj ą cy ilo ść linii, słów i znaków w pliku podanym z linii polece ń lub otrzymanych na standardowym wej ś ciu (w przypadku uruchomienia programu bez dodatkowego argumentu). Zadanie 4 Napisz program otrzymuj ą cy na standardowym wej ś ciu 3 liczby naturalne k, l, m takie, ż e 1 < k, l < 11, a m jest zapisem przy podstawie k pewnej liczby naturalnej. Program ma konwertowa ć liczb ę m z zapisu przy podstawie k na liczb ę w zapisie przy podstawie l i wypisywa ć liczb ę w tym zapisie (przy podstawie l). UWAGA: Mo ż na zało ż y ć , ż e warto ść konwertowanej liczby w zapisie dziesi ę tnym nie przekracza 1000. Zadanie 5 Napisz program wypisuj ą cy w systemie dziesi ę tnym silni ę zadanej liczby naturalnej (odczytanej ze standardowego wej ś cia). UWAGA: Program musi by ć przygotowany wyliczania silni du ż ych liczb; w uproszczonej wersji mo ż na przyj ąć , ż e otrzymana na standardowym wej ś ciu liczba jest z przedziału [0, 5000). Zadanie 6 Wylicza ć warto ść wyra ż e ń składaj ą cych si ę z liczb rzeczywistych oraz operatorów +, - (binarnego i unarnego), *, /, () według ogólnie przyj ę tej konwencji. UWAGA: W wyra ż eniach mog ą wyst ą pi ć po sobie operatory unarne, np. "- -1". Zadanie 7 Wyliczy ć na ile sposobów mo ż na ustawi ć na szachownicy 8 hetmanów w ten sposób, aby ż adne dwa z nich si ę wzajemnie nie szachowały. Przedstawi ć jedno z takich ustawie ń Zadanie 8 Wyliczy ć na ile sposobów mo ż na ustawi ć na szachownicy 5 hetmanów w ten sposób, aby ka ż de pole było szachowane przez któr ąś z tych figur. Przedstawi ć jedno z takich ustawie ń Zadanie 9 Wyliczy ć na ile sposobów mo ż na przej ść konikiem plansz ę szachow ą o wymiarach 5x5 rozpoczynaj ą c drog ę z lewego górnego rogu szachownicy, tak, aby ka ż de pole odwiedzi ć dokładnie jeden raz. Przedstawi ć jedn ą z takich dróg. Zadanie 10 Program ma wylicza ć wyznacznik metod ą eliminacji Gaussa. Jako dane ma otrzymywa ć liczb ę całkowit ą b ę d ą c ą wymiarem macierzy oraz linie wraz z kolejnymi wierszami macierzy. Program ma wypisywa ć pojedyncz ą liczb ę b ę d ą c ą wyznacznikiem. Zadanie 11 Zaimplementuj w j ę zyku C++ klas ę macierzy wymiaru 2 x 2 nad pier ś cieniem liczb całkowitych (do wyboru - rzeczywistych) z operacjami: dodawania, odejmowania i mno ż enia. Klasa ma zawiera ć metod ę wypisuj ą c ą zawarto ść macierzy oraz konstruktor pozwalaj ą cy na utworzenie obiektu tej klasy z odpowiedniej tablicy tablic. Zadanie 12 Zaimplementuj w j ę zyku C++ wzorce funkcji licz ą cych NWD i NWW nad dowoln ą UFD (nad pier ś cieniem, w którym zdefiniowane jest działanie dzielenia z reszt ą ). Zadanie 13 Zaimplementuj z w j ę zyku C++ klasy osoba (imi ę , nazwisko, itp.), student (osoba + oceny z przedmiotów,...), studium (nazwa, rok, studenci,...) aby utworzy ć struktur ę prostej bazy danych. W klasach maj ą znale źć si ę metody zwi ą zane z wypisywaniem danych, i ich modyfikacj ą Zadanie 14 Zaimplementuj w j ę zyku C++ wzorzec klasy macierzy nad dowolnym pier ś cieniem liczbowym z operacjami: dodawania, odejmowania, mno ż enia, usuwania wiersza, usuwania kolumny oraz brania referencji do wybranego elementu macierzy (ewentualnie do dowolnego wiersza macierzy).. Klasa ma zawiera ć metod ę wypisuj ą c ą zawarto ść macierzy oraz konstruktor pozwalaj ą cy na utworzenie obiektu tej klasy z odpowiedniej tablicy tablic. Zadanie 15 Zaimplementuj w j ę zyku C++ wzorzec klasy wielomianów jednej zmiennej nad dowolnym ciałem jednej zmiennej z operacjami dodawania, odejmowania i mno ż enia, brania postaci unormowanej, reszty z dzielenia (wielomianu przez wielomian) oraz liczenia nwd. Klasa ma zawiera ć metod ę wypisuj ą c ą (niezerowe) współrz ę dne wielomianu oraz konstruktory pozwalaj ą ce na utworzenie obiektu tej klasy z odpowiedniej tablicy lub liczby. Zadanie 16 Zaimplementuj w j ę zyku C++ klas ę dowolnie du ż ych liczb całkowitych. Nale ż y odpowiednio przeci ąż y ć operatory "*", "/", "%", "-", "+", "*=", "=", "/=", "-=", "+=", "--", "++", "<", ">", "==", "<<" (wypisywanie do strumienia), oraz zaimplementowa ć konstruktory od liczby long oraz ła ń cucha znaków. Mo ż liwe jest zmniejszenie powy ż szej listy operatorów do przeci ąż enia w przypadku u ż ycia tej klasy do zaimplementowania w j ę zyku C++ klasy dowolnie du ż ych liczb wymiernych z tymi samymi operatorami (tylko bez "%"). Ułamki maj ą by ć wypisywane (i w miar ę mo ż liwo ś ci przechowywane) w postaci uproszczonej.