projekty 3 id 400866 Nieznany

background image

Jednym z warunków zaliczenia przedmiotu Programowanie obiektowe jest
zrealizowanie na ocenę jednego z poniższych projektów.

Każdy projekt należy zaimplementować wykorzystując poniższe założenia:

1. Projekt napisany zgodnie z paradygmatem programowania obiektowego (użycie

takich mechanizmów jak dziedziczenie, polimorfizm, klasa abstrakcyjna, przeciążanie
operatorów, itd.).

2. Implementacja projektu w języku C++ lub Java.
3. Ten sam projekt może być w jednej grupie realizowany, co najwyżej przez dwóch

studentów (oczywiście wówczas każdy projekt wykonywany jest samodzielnie).

4. Projekty 14-17 to projekty z wykorzystaniem grafiki (dla zainteresowanych).
5. Termin wykonywania projektu: do ostatniego laboratorium.
6. Z każdego projektu można otrzymać ocenę bardzo dobrą. Ocenie będzie podlegało

zastosowanie paradygmatu programowania obiektowego i różnych jego
mechanizmów (im więcej tym lepiej) i ogólnie, podejście do problemu.

7. Projekt wykonywany jest samodzielnie!

Projekty do wyboru

1. Gra w życie

Odbywa się ona na siatce kwadratowej, gdzie każda komórka może być żywa lub martwa. Ich
zachowaniem kierują następujące reguły: Komórka ożywa, gdy ma dokładnie trzech
sąsiadów żywych. Komórka przeżywa, gdy ma dwóch lub trzech sąsiadów żywych (umiera,
gdy ma ich mniej niż dwoje, „z samotności”, lub gdy ma ich więcej niż czworo
„z przeludnienia”).

Założenia:
Dane wejściowe podajemy w pliku, np. w formie:

o o o m m o o o
o o o m o o o o
m m o o o o o o
o o o o o o o o


Gdzie znaki 'o' i 'm' oznaczają odpowiednio komórkę żywą i martwą. Po odczytaniu danych
wejściowych program powinien generować z podanym z góry opóźnieniem, poszczególne
plansze. Dane wyjściowe przedstawić również w pliku.

2. Filtr tekstowy dla plików tekstowych

1. Zliczanie znaków, słów i wierszy
2. Numerowanie wierszy pliku
3. Usuwanie pustych wierszy
4. Zamiana małych liter na duże
5. Zamiana dużych liter na małe
6. Zamiana znaków tabulacji na określoną liczbę spacji

background image

7. Zliczanie krotności wystąpienia podanego ciągu znaków
8. Zamiana podanego ciągu znaków na inny podany ciąg
9. Usunięcie z pliku podanego ciągu znaków, wypisanie wierszy (oraz ich numerów)

zawierających podany ciąg znaków

10. Wypisanie n początkowych wierszy pliku
11. Wypisanie n końcowych wierszy pliku
12. konwersja polskich znaków (dla standardów kodowania ISO-8859-2, Windows-1250,

Unicode)

Program powinien tworzyć nowy plik wynikowy, pozostawiając plik wejściowy bez zmian

3. Kalkulator wierszowy

Program powinien spełniać funkcje kalkulatora obliczającego wartość wyrażenia podanego z
klawiatury, jako ciąg znaków.

Założenia:

1. Cztery podstawowe działania na liczbach rzeczywistych
2. Reszta z dzielenia
3. Nawiasy wielopoziomowe
4. kilka wybranych funkcji (np. pierwiastkowanie, potęgowanie, itp. )

4. Baza danych

Program ma spełniać funkcje prostej bazy danych obsługiwanej z konsoli (menu tekstowe):

Założenia:

1. Dane przechowywane w pliku tekstowym (zapis i odczyt)
2. Przeglądanie zawartości bazy
3. Dodawanie rekordu na końcu bazy
4. Modyfikacja wybranego rekordu
5. Usuwanie wybranego rekordu
6. Wyszukiwanie rekordów według podanego kryterium
7. Sortowanie rekordów według wybranego kryterium

5. Quiz - przeprowadzanie testów

Program powinien wczytywać z pliku pytania wraz z odpowiedziami i przeprowadzać
egzamin. Po przeprowadzeniu testów program powinien podsumować wyniki i na podstawie
zadanych kryteriów wystawić ocenę. Program powinien mieć możliwość tworzenia i edycji
plików z pytaniami i odpowiedziami.

6. Analizator liczb

Program powinien analizować liczby podawane przez użytkownika i określać jakie to liczby:
pierwsze, doskonałe, zaprzyjaźnione, Fibonacci'ego, Amstrong'a. Program powinien także
umożliwiać generowanie liczb podanych rodzajów leżących w podanym przez użytkownika
przedziale. Dodatkowym atutem będzie wykorzystanie wątków.

background image

Wskazówki:

1. Liczba pierwsza, to liczba naturalna większa od 1, podzielna tylko przez 1 i przez samą

siebie

2. Liczby zaprzyjaźnione, to dwie liczby naturalne, z których każda jest równa sumie

podzielników właściwych drugiej liczby (np. 220 i 284, tzn. 220 jest sumą
podzielników liczby 284, a 284 jest sumą podzielników liczby 220);

3. Liczby Fibonacci'ego to liczby należące do ciągu: 1, 1, 2, 3, 5, 8, 13, 21, ..... (dwie

pierwsze liczby to jedynki, każda następna jest sumą dwóch poprzednich);

4. Liczba Amstrong'a to liczba równa sumie sześcianów swoich cyfr, np. 153 = 1^3 + 5^3

+ 3^3.

7. Tekstowa grafika

Program ma mieć możliwość tworzenia i rysowania takich obiektów graficznych jak: odcinek,
okrąg, trójkąt, czworokąt, n-kąt, w trybie tekstowym (za pomocą np. symbolu *). Obiekty
"graficzne" powinny być skojarzone z odpowiednią kanwą reprezentującą układ
współrzędnych, obiekty mogą być do niej dodawane, usuwane. Obiekty powinny być
widoczne po narysowaniu odpowiedniej kanwy.

8. Kalendarz akademicki

1. Program ma wyświetlać kalendarz na podany rok z zaznaczeniem dnia bieżącego.
2. Dodatkowo projekt ma mieć możliwość wyświetlania wybranego przez użytkownika

miesiąca

3. Dni wolne, rektorskie i święta powinny znaleźć się w osobnym pliku.
4. Należy dodać funkcjonalność określenia, na podstawie daty początku i końca

semestrów i podanych dni wolnych, liczby poszczególnych dni tygodnia w danym
semestrze, np. pon - 15, wto - 13, itd.

9. Gra Tetris

Tetris - popularna gra w klocki, odpowiednia kombinacja klocków (z podziałem na kolory
i/lub kształty) powoduje kasowanie odpowiedniego zbioru klocków. Zastosować system
punktacji, możliwość gry ze współzawodnikiem.

10. Gra Wąż

Znana gra, więc chyba nie trzeba komentować.

11. Supermarket

W każdym SuperMarkecie znajdują się produkty przeróżnych rodzajów o różnych
własnościach:

- produkty spożywcze (nazwa, cena, termin ważności, skład, tabela wartości kalorycznych, ...)
pieczywo (chleb, bułka paryska, bułka poznańska, chałka, ...),

background image

nabiał (mleko, ser, jogurt, ...),
wędliny (krakowska, polędwica sopocka, ...),
- artykuły chemiczne (nazwa, cena, termin ważności, skład, środki ostrożności, ...)
- AGD RTV (nazwa, cena, okres gwarancji, ...),

Zakupy przeciętnego klienta na ogół odbywają się wg następującego algorytmu:

- Klient wchodząc do sklepu, bierze koszyk (ew. wózek).
- Klient wrzuca do koszyka produkty, które chce kupić.
- Po dłuższym zastanowieniu klient ewentualnie zmienia zdanie i odkłada na półkę wcześniej
wybrany produkt.
- Klient idzie do kasy na koniec kolejki i czeka na obsługę.
- Klient płaci za zakupy (kartą lub gotówką).

Wymagania dot. projektu:

a) Zaprojektować i zaimplementować:
- klasy reprezentujące produkty w sklepie,
- klasy realizujące funkcjonalność koszyka jako abstrakcyjny typ danych (np. stos, kolejka,
drzewo, ...),
- klasy, których obiektem będą klienci,
- abstrakcyjny typ danych realizujący kolejkę klientów do kasy (np. kolejka :-)).
- Przed wysłaniem klienta do sklepu należy odpowiednio zaopatrzyć sklep. Tzn. wprowadzić
przeróżnego rodzaju produkty (dowolna metodą np. z pliku)
- Wysłać kilku klientów do sklepu po zakupy
- Ustawić klientów w kolejce przy kasie
- W odpowiedniej kolejności obsłużyć klientów.

12. Statki

Zadaniem projektu jest realizacja znanej gry w statki, w której udział bierze użytkownik
i komputer. Obydwie strony generują planszę 10x10, przy czym użytkownik (student)
wprowadza planszę z pliku, w postaci:

xxx...x...
..........
xx.....x..
.....x....
..........
xxx..xx...
..........
xx.....x..
..........
..xxxx....

natomiast komputer generuje swoją planszę w sposób losowy. Dla uproszczenia rodzaje
statków są następujące: x - 4 sztuki, xx - 3 sztuki, xxx - 2 sztuki, xxxx - 1 sztuka (Jeżeli ktoś ma
życzenie inny kształt statków, to proszę bardzo :-)). Podczas losowania statków należy
zwrócić uwagę aby statki nie stykały się ze sobą.

Gra polega na tym, że kolejno na zmianę strzelamy w statki przeciwnika podając
odpowiednie współrzędne. Jeżeli trafimy, to przysługuje nam kolejny dodatkowy strzał. Przy

background image

trafionym strzale powinna zostać podana informacja jaki typ statku trafiono. Po każdym
strzale wypisać planszę obrazującą strzały oddane do przeciwnika. Gracz, który zestrzeli
wszystkie statki przeciwnika, wygrywa. Pod koniec wypisywane są obydwie plansze.

Student otrzyma dodatkowy plus, jeżeli komputer nie będzie losował miejsc w których na
pewno nie ma statków. Oczywiście dodatkowe elementy w projekcie mile widziane.

13. Macierze

Napisać program, który umożliwi zdefiniowanie tablicy o dowolnych wymiarach (tablice np.
mogą być odczytywane z pliku tekstowego). Dla macierzy zdefiniować: funkcje wypisywania
tablicy, dodawania i odejmowania odpowiednich macierzy, mnożenia macierzy przez liczbę.
Mnożenie macierzy i obliczanie wyznacznika macierzy kwadratowej. Wyznaczanie macierzy
odwrotnej do danej macierzy, zamianę macierzy do macierzy trójkątnej.

PROJEKTY GRAFICZNE (DLA ZAINTERESOWANYCH)

14. Gra – Układanka

1. Wczytanie obrazka
2. Podział obrazka na kilka części
3. Stworzenie siatki, do której będą przykładane kawałki układanki
4. Informacja o poprawności ułożenia układanki
5. Statystyka zwycięstw

15. Gra - Domino

1. Zbiór klocków domino - przemyślany layout
2. Zasady identyczne jak w grze domino
3. Możliwość gry kilku użytkowników
4. Statystyka zwycięstw

16. Edytor graficzny

Aplikacja, która posiada elementy funkcjonalności edytora MsPaint. (Im więcej możliwości
tym lepsza ocena)

17. Generator wykresów funkcji

Zastosować parser do odczytywania wzorów funkcji (dozwolone jest ograniczenie dla funkcji
bez asymptot). Możliwość wybory dziedziny funkcji.


Wyszukiwarka

Podobne podstrony:
kse projekt id 252149 Nieznany
projekt29 id 400291 Nieznany
projektMOS id 400412 Nieznany
projektowanie 2 id 400443 Nieznany
Projekt 7 A id 398367 Nieznany
projekt0002 id 400180 Nieznany
Projekt 6 id 397770 Nieznany
Omowienie projektu id 335352 Nieznany
PROJEKT 5 id 398124 Nieznany
GW PROJEKT F id 197909 Nieznany
projekt 4 i 5 id 398318 Nieznany
Mechana projekt2 id 290480 Nieznany
projekt 1 3 id 397964 Nieznany
Projekt3 id 400307 Nieznany
projekt 0 1 id 397933 Nieznany
projekt 3 id 398252 Nieznany
6 Zasady Projektowania id 43987 Nieznany (2)
Projekt X id 399818 Nieznany

więcej podobnych podstron