Ver. 1.0 Beta, Don't have a compiler? Now you can write simple scripts ONLINE! This is a basic version -does not include all the Pascal statements. Only to learn basics

Lista 3 -lekko zaawansowane zadania: klasy, rekurencja, struktury danych a także lista dwukierunkowa

C / C++

Back to previous articleprevious Struktury, rekurencja, operacje na plikach, funkcje
Go to main menuup zadania
Next articlenext Optymalizacja baz danych

Lista 3 -lekko zaawansowane zadania: klasy, rekurencja, struktury danych a także lista dwukierunkowa

Zadania C++


klasy, rekurencja, struktury danych


Poziom robi się coraz trudniejszy. W tym zestawie tylko 3 zadania, za to wymagające przemyśleń.

Przypomnienie

klasy – struktury danych, które pozwalają dziedziczyć właściwości innej klasy.

Do czego używane.
Kiedy piszemy np. grę i chcemy żeby wszystkie ludziki zachowywały się tak samo najlepiej oprogramować pewne prawa, reguły, które będą dotyczyły każdego. Bez względu na to czy jest nim komputer czy gracz. Każdego dotyczy prawo ciążenia, żaden nie może wejść w ścianę itd. Gdybyśmy dla każdego ludzika programowali od nowa te same zasady, tracilibyśmy dużo czasu.

Klasy pozwalają zaprogramować elementy wspólne jako klasę podstawową, a następnie dziedziczyć z klasy podstawowej, dopisując tylko elementy charakterystyczne dla danego przypadku.

W bazach danych warto oprogramować klasę, która ma standardowe operacje, np. Dodaj, edytuj usuń, pobierz i z niej dziedziczyć na inne klasy, które odpowiadają za określone tabele.



Rekurencja


Zadanie 5.3 „Wykrywanie zagrożenia”



Zadanie polega na napisaniu części algorytmu, który jest używany w popularnej grze saper. Ponieważ znajduje się w dziale rekurencja, jest to duża podpowiedź.

Na planszy  (tablicy o określonej przez Ciebie strukturze) o rozmiarze definiowanym przez programistę np. 10x10 wylosuj określoną liczbę min, również zdefiniowaną przez programistę. Następnie dla każdego pola wyznacz zagrożenie, czyli ile min graniczy z danym polem.

Teraz pozwól użytkownikowi wprowadzić numer pola X, Y. Odkryj wszystkie pola graniczące z nim jeśli pole jest puste aż do momentu napotkania jakiegokolwiek zagrożenia. Oczywiście odkrywanie pól ma miejsce w pamięci. Jeśli odkryto minę, wypisz odpowiedni komunikat i wyłącz program.

Wyświetl tablicę – co się dzieje na planszy

Przykładowe Oznaczenia:
- zakryte pole
1-8: zagrożenie
spacja: puste pole
* mina

Jeśli będziesz miał czas załóż pętlę na program, tak aby umożliwiał ciągłe sprawdzanie planszy i się nie wyłączał po każdorazowym wpisaniu odkrywanego pola

Będę oceniał wybór struktury tablicy oraz metodę wyjścia z problemu rekurencji na określonym obszarze.

Uwaga: Obok tablicy są losowe dane, nie ma wyzerowanej pamięci. Uważaj ze stosowaniem rekurencji, żeby nie wyjść poza ramy tablicy.


Klasy


Zadanie 6.1 „Lista dwukierunkowa”



Zaimplementuj klasę listy dwukierunkowej. Musi posiadać wskaźnik na poprzedni i następny element a także operacje dodaj, usuń. Musi mieć wskaźnik na wstawiane dowolne dane.


Zadanie 6.2 „Baza danych z lista dwukierunkową”



Wykorzystaj zadanie zapis danych osobowych, tak, aby ilość danych odczytywanych z pamięci i tworzonych w programie była dowolna. Dane wstawiane do listy powinny być sortowane wg. nazwiska. Program powinien posiadać możliwość zapisu wszystkich danych.


O zadaniach...
Tym razem 3 zadania, ale naprawdę skomplikowane. W zadaniu 6.2 chodzi mi o pokazanie, jak w praktyce wygląda programowanie pewnych projektów. Po pewnym czasie okazuje się, że zleceniodawca chce większych możliwości programu. Co zrobić? Pisać na nowo czy przerabiać stare...
życzę powodzenia
This website uses cookie files in order to provide Google services (advertisements, analitycs) and Facebook. If you want to block using cookies, turn them off in your browser settings. Need a help? Click me