background image

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 

background image

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.