Projekt zaliczeniowy z Programowania

Podobne dokumenty
Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Pomorski Czarodziej 2016 Zadania. Kategoria C

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

Projekt zaliczeniowy z Programowania

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

Instrukcje dla zawodników

Dziedziczenie. Zadanie 1

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

I. Podstawy języka C powtórka

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

OPROGRAMOWANIE DEFSIM2

lekcja 8a Gry komputerowe MasterMind

Programowanie w języku Java

Programowanie w języku Python. Grażyna Koba

Dlaczego stosujemy edytory tekstu?

Wszystkie dane są fikcyjne, wygenerowane jedynie na potrzeby zadań.

Projekty zaliczeniowe Podstawy Programowania 2012/2013

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

Programowanie 3 - Funkcje, pliki i klasy

3.4. Opis konfiguracji layoutów.

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Centralna Komisja Egzaminacyjna Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. PESEL

Instrukcja wysyłania depesz do Sekretariatu Stowarzyszenia Gmin Dorzecza Górnej Odry polskiej części Euroregionu Silesia

Specyfikacja mikrobloga na portalu GoldenLine.pl

Zadanie 1. Suma silni (11 pkt)

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Warsztaty dla nauczycieli

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

Laboratorium 1 - Programowanie proceduralne i obiektowe

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Jak rozpocząć pracę? Mapa

Python: JPEG. Zadanie. 1. Wczytanie obrazka

OBSŁUGA PRACY DYPLOMOWEJ W APD PRZEZ STUDENTA

Tworzenie pliku źródłowego w aplikacji POLTAX2B.

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Główne elementy zestawu komputerowego

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Operacja macro. czyli jak podpisać zdjęcie i zrobić miniaturę. Tworzymy nową akcję. Anna Góra. Zmiana dpi zdjęcia na 300 piks/cal.

PIERWSZE KROKI W PROGRAMIE A D A

W tej instrukcji zostanie opisany sposób w jaki tworzy się, edytuje i usuwa obiekty na mapie. Następnie wybierz Rysuj

Instrukcja zakupu karnetów w systemie on-line sezon 2012/2013

Opis implementacji: Poznanie zasad tworzenia programów komputerowych za pomocą instrukcji języka programowania.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

Pokaz slajdów na stronie internetowej

Instrukcja użytkownika ARSoft-WZ3

Przekształcanie wykresów.

Jak posługiwać się edytorem treści

KONSTRUKCJA TRÓJKĄTA 1 KONSTRUKCJA TRÓJKĄTA 2 KONSTRUKCJA CZWOROKĄTA KONSTRUKCJA OKRĘGU KONSTRUKCJA STYCZNYCH

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Legia Warszawa S.A. ul. Łazienkowska 3, Warszawa. Zasady sprzedaży karnetów/biletów w systemie on-line sezon 2012/2013

Układy witryn internetowych

Jeżeli pole Krawędź będzie zaznaczone uzyskamy obramowanie w całej wstawianej tabeli

OPERACJE NA PLIKACH I FOLDERACH

Proces uprawniania w module klubowym

EGZAMIN MATURALNY Z INFORMATYKI

c. Co by było, gdyby krok nr 2 wyglądał: przypisz k liczbę 1

EGZAMIN W KLASIE TRZECIEJ GIMNAZJUM CZĘŚĆ 2. MATEMATYKA

Dostosowanie szerokości kolumn

Programowanie obiektowe - zadania

UMOWY INSTRUKCJA STANOWISKOWA

MODUŁ NAUCZYCIEL - INSTRUKCJA OBSŁUGI

BRELOK DO KLUCZY. ZADANIE Stwórz breloczek z nazwą twojej szkoły 1. Szkic breloczka z napisem MAKER

Tworzenie szablonów użytkownika

WEJŚCIE W TRYB PROGRAMOWANIA

Wstęp Sterowanie Utworzenie, wybór i kasowanie gracza. utworzenia nowego gracza Nowy gracz Nastawienie gracza

Streszczenie Komputery do przechowywania rysunków, zdjęć i innych obrazów używają tylko liczb. Te zajęcia mają ukazać w jaki sposób to robią.

idream instrukcja do gry klasowej z rankingiem

Abacus Tychy, ul. Pod Lasem 20 tel

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2010 POZIOM ROZSZERZONY CZĘŚĆ I WYBRANE: Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

TABULATORY - DOKUMENTY BIUROWE

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

EGZAMIN MATURALNY Z INFORMATYKI POZIOM ROZSZERZONY CZĘŚĆ II 13 MAJA 2019 WYBRANE: Czas pracy: 150 minut. Liczba punktów do uzyskania: 30

I Liceum Ogólnokształcące w Warszawie

WOJEWÓDZTWO PODKARPACKIE

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

Specyfikacja profili na portalu GoldenLine.pl

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

Elektroniczny podręcznik Selection Drzwi przesuwne i składane

INSTRUKCJA ZNAKOWANIA SZLAKÓW TURYSTYCZNYCH W GORCZAŃSKIM PARKU NARODOWYM

Ćw. IV. Tworzenie stron internetowych. Podstawy projektowania, wprowadzenie do języka HTML

Instrukcja uruchomienia i obsługi Programu Użytkownika Kas Posnet PUK

Próbny egzamin maturalny z matematyki Poziom rozszerzony

Instrukcja obsługi wewnętrznej poczty mmedica

Scilab - podstawy. Wersje instalacyjne programu Scilab mogą zostać pobrane ze strony

INSTRUKCJA SKŁADANIA WNIOSKÓW ONLINE O WYDANIE KARTY KIBICA LEGII WARSZAWA

Szkolenie z zakresu obsługi kreatora składania wniosków Witkac.pl po nowelizacji ustawy o działalności pożytku publicznego i o wolontariacie

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Edytor tekstu MS Word podstawy

GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13

PRÓBNY EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE CZĘŚĆ PRAKTYCZNA

PRZYKŁADOWY ARKUSZ EGZAMINACYJNY Z MATEMATYKI

w programie Baltie 1. Uruchamiamy program komputerowy Praca z komputerem to praca z programami komputerowymi. Każdy program trzeba uruchomić.

I. Program II. Opis głównych funkcji programu... 19

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Formaty obrazów rastrowych biblioteki PBM

Transkrypt:

Projekt zaliczeniowy z Programowania Termin nadsyłania rozwiązań - 5.06.209 208/209 Program, który nie kompiluje się na komputerach w pracowni OKWF nie podlega ocenie! Program powinien zostać napisany samodzielnie! Prosimy o nadsyłanie rozwiązań do koordynatora przedmiotu w postaci archiwum o nazwie Imie Nazwisko.zip lub Imie Nazwisko.tar.gz Samodzielnicowanie się (samoorganizacja) miasta Opis skrócony: Stwórzmy kwadratowe (na mapie) miasto o wielkości 25km 25km odpowiednik Warszawy. Miasto początkowo jest bezludne, a następnie zasiedlamy je N mieszkańcami, każdy w losowym miejscu w granicach miasta. Są dwa typy mieszkańców, dla rozróżnienia przypiszemy im kolory zielony i czerwony np. kibice Legii i Polonii. Załóżmy, że połowa miasta kibicuje Legii jest zielona, a połowa Polonii czerwona. Jak wiemy oba kluby nie pałają do siebie sympatią, a ich kibice dążą do tego, by mieszkać w sąsiedztwie swoich klubowych pobratymców. Dlatego też każdego roku, każdy mieszkaniec sprawdza ilu kibiców każdego klubu mieszka w odległości nie większej, niż km od niego (rysunek a). Jeśli przeważają kibice przeciwnego klubu, wtedy dany kibic przeprowadza się o km w dowolnym kierunku (rysunek b). Napisz program, który przeprowadzi symulację takiej sytuacji i pokaże ewolucję miasta w ciągu x lat. a) b) 4 2 3 4 65 7 2 3 5 68 9 7 Rysunek : Na zielono zaznaczeni są kibice Legii, na czerwono kibice Polonii. a) Zliczanie kibiców w obrębie km: zadowolenie zaznaczonego czarną kropką kibica wynosi tutaj -2. b) Ponieważ zadowolenie jest ujemne, kibic przeprowadza się o kilometr w dowolnym kierunku, czyli jego pozycja po przeprowadzce leży na przerywanym okręgu. Wymagania minimalne (na 50%): Napisanie programu opisującego powyższą sytuację, a w nim: stworzenie klasy Miasto, składającej się z parametrów opisujących samo miasto, vectora (lub tablicy) kibiców oraz z co najmniej następujących funkcji składowych (metod): zaludnij funkcji, która na podstawie argumentu N będącego całkowitą liczbą mieszkańców wylosuje miejsca zamieszkania N kibiców tak, że stosunek barw klubowych będzie wynosił 50:50. Przy każdym uruchomieniu programu symulacja powinna dawać inne wyniki.

ewoluuj funkcji, która nie przyjmuje żadnych argumentów, a jej działanie polega na wykonaniu symulacji ewolucji miasta w trakcie jednego roku, czyli sprawdzeniu dla każdego kibica jego osobistego zadowolenia oraz w przypadku ujemnego zadowolenia przeprowadzce danego mieszkańca, przy czym będzie ona korzystała z metod klasy Kibic zapisz i narysuj funkcji, która zapisuje w dwóch kolumnach położenia x i y kibiców Legii i Polonii (kibiców Legii w pliku legia.txt, a kibiców Polonii w pliku polonia.txt), a następnie tworzy rysunek w programie gnuplot, pokazujący aktualne położenia kibiców obu drużyn. W tym celu funkcja powinna tworzyć plik tekstowy skrypt.gp z poleceniami dla programu gnuplot: plot "polonia.txt" with points pointtype 7,"legia.txt" with points pointtype 7 pause - "Wciśnij ENTER" (w ten sposób standardowo kibice Legii zostaną zaznaczeni na rysunku zielonymi kropkami, a kibice Polonii czerwonymi), a następnie wykonywać polecenie: system("gnuplot skrypt.gp") stworzenie klasy Kibic, składającej się z dwóch liczb zmiennoprzecinkowych opisujących położenie kibica(w zakresie 0-25) oraz parametru wybranego przez Ciebie typu, opisującego barwy klubowe. Ponadto klasa powinna zawierać co najmniej następujące funkcje składowe (metody): zadowolenie funkcji, która na podstawie argumentu Miasto liczy zadowolenie kibica z miejsca zamieszkania. Metoda powinna znaleźć liczbę kibiców jednego i drugiego klubu mieszkających w maksymalnej odległości km od badanego kibica i sprawdzić kibice którego klubu przeważają w danym sąsiedztwie. Powinna ona zwracać różnicę liczby kibiców klubu badanego kibica i liczbę kibiców przeciwnego klubu, patrz rysunek a). przeprowadzka funkcji poruszającej kibica w losowym kierunku o km. program powinien zapytać użytkownika o liczbę mieszkańców miasta N oraz liczbę x lat (kolejnych kroków symulacji), a następnie zaludnić miasto, wypisać poczatkowe średnie zadowolenie mieszkańca i pokazać położenia mieszkańców (poprzez uruchomienie funkcji zapisz i narysuj). Następnie powinien przeewoluować miasto, po każdym roku wyświetlając średnie zadowolenie mieszkańca i pokazując położenia mieszkańców. Program powinien sprawdzić poprawność wpisanych przez użytkownika danych (np. czy są dodatnie) i ew. wyświetlić odpowiedni komunikat. Przykładowy wygląd miasta po 5 latach przedstawiony jest na rysunku 2. Rysunek 2: Przykładowy wygląd miasta po 5 latach Wymagania na 75%: Jak wyżej, ale: 2

należy zadbać, aby metoda przeprowadzka nie wyprowadzała mieszkańców z miasta, można wykorzystać jeden z trzech sposobów (rysunek 3): a) losować tak długo, dopóki docelowy punkt leży poza miastem, tak aby ostatecznie kibic przeprowadził się do miasta, b) zawężyć obszar przeprowadzki, tak aby kibic nie mógł przeprowadzić się za daleko (tzn. za miasto), c) użyć periodycznych warunków brzegowych, czyli skleić parami lewą i prawą, a także górną i dolną krawędź miasta, tak aby np. wyjście poza miasto z prawej strony oznaczało powrót do miasta z lewej strony (preferowane rozwiązanie o jak najwyższej literce). a) b) c) Rysunek 3: Sposoby manipulowania kibicem, aby przeprowadził się tylko w ramach miasta. a) Losowanie nowego miejsca zamieszkania tak długo, aż nowe miejsce zamieszkania zostanie ustalone jako wewnątrz miasta. b) Losowanie nowego miejsca zamieszkania w zawężonym zakresie, tak aby możliwy obszar przeprowadzki nie wychodził poza miasto. c) Zastosowanie periodycznych warunków brzegowych, czyli sklejenie lewej i prawej oraz górnej i dolnej krawędzi miasta powinna istnieć możliwość zmiany promienia okręgu w którym sprawdzane jest zadowolenie mieszkańca i jednocześnie odległości o jaką mieszkaniec się przeprowadza klasa Miasto powinna posiadać konstruktor, który na podstawie liczby całkowitej N oznaczającej całkowitą liczbę mieszkańców oraz liczby zmiennoprzecinkowej p oznaczającej procent kibiców zielonych (np. 0.5 to stosunek 50:50) stworzy zaludnione już miasto klasa Kibic powinna posiadać konstruktor, który automatycznie wylosuje miejsce zamieszkania kibica, a jego klub przypisze na podstawie argumentu konstruktora wybranego przez Ciebie typu klasa Miasto powinna posiadać metodę, która na podstawie obiektu typu string wpisywanego przez użytkownika z klawiatury w funkcji main, powinna zaludnić miasto poprzez wczytanie pliku, którego nazwa zawiera się w podanym stringu. Plik zawiera trzy kolumny: pozycję x, pozycję y, klub kibica w postaci obiektu typu string: Legia lub Polonia. Każdy wiersz to osobny kibic np:.0 5.4 3. 24.5 5.2 7.5 7.2 2.2 Polonia Legia Legia Polonia Zakładamy, że plik jest napisany poprawnie. Program powinien być podzielony na pliki - osobny plik na główny kod źródłowy oraz każda klasa posiadająca osobny plik nagłówkowy i plik źródłowy. Program po uruchomieniu powinien zapytać użytkownika czy chciałby losować mieszkańców czy wczytać plik jeśli użytkownik odpowie że losować, to program ma wczytać z klawiatury liczbę N mieszkańców miasta, stosunek liczby kibiców z obu klubów p, liczbę x lat (kolejnych kroków symulacji) oraz promień okręgu r w którym sprawdza się zadowolenie mieszkańca ( i jednocześnie odległość o jaką mieszkaniec się przeprowadza ). Następnie powinien zaludnić miasto oraz je przeewoluować x razy, po każdym roku wyświetlając średnie zadowolenie mieszkańca. Natomiast jeśli użytkownik zdecydował sie wczytać plik to program powinien wczytać z klawiatury liczbę x oraz nazwę pliku z kibicami, a 3

następnie zaludnić miasto zgodnie z plikiem i przeewoluować je, po każdym roku wyświetlając średnie zadowolenie mieszkańca. Wymagania na 00%: Jak wyżej, ale: zaimplementuj obsługę źle napisanego pliku z kibicami do wczytania, np. zła nazwa klubu (słowo inne niż Polonia lub Legia), położenie kibica poza miastem czy niepełne dane. W przypadku złej nazwy klubu zapytaj użytkownika czy przypisać kibica do konkretnego klubu, czy pominąć go, czy zakończyć program. wyjaśnienie: obrazki w formacie PPM [] jest to plik tekstowy zawierający trzy linijki nagłówka oraz liczby stanowiące o kolorze pikseli obrazka. Kolorowy obrazek w takim formacie wygląda w formacie tekstowym oraz w przeglądarce obrazów odpowiednio: P3 3 2 255 255 0 0 0 255 0 0 0 255 0 0 0 230 230 230 255 0 255 W pliku znajdują się kolejno:. nagłówek: P3 oznacza kolorowy obrazek zapisany tekstowo (dla nas niezmienne) 2. dwie liczby całkowite oznaczające szerokość i wysokość obrazka mierzoną w pikselach, tutaj obrazek o szerokości 3 i wysokości 2 pikseli 3. maksymalna wartość koloru standardowo 255, tego nie zmieniamy oznacza ona rozdzielczość w kolorze, możliwe wartości zawierają się w tym przykładzie pomiedzy 0 a 255 4. szerokość wysokość 3 liczb całkowitych odzielonych białymi znakami każda kolejna trójka liczb oznacza piksel w formacie RGB, np. piksel czerwony to: 255 0 0, a zielony: 0 255 0 klasa Miasto powinna dodatkowo zawierać metodę narysuj o argumentach: string będący nazwą pliku, liczba całkowita M oraz liczba zmiennoprzecinkowa R. Metoda powinna stworzyć nowy plik o podanej nazwie, z rozszerzeniem.ppm, a w nim zapisany obrazek o rozdzielczości M M, na którym będą zaznaczeni kibice w postaci kropek o promieniu R pikseli i odpowiednim kolorze: zielonym (kibice Legii) lub czerwonym (kibice Polonii). program powiniem zapisywać obrazek mapy miasta co 5 lat ewolucji (rysunek 4). Rysunek 4: Przykładowa ewolucja miasta 4

Wymagania na punkty powyżej 00%: dodatkowe punkty można uzyskać poprzez napisanie bezbłędnego programu spełniającego wszystkie powyższe kryteria i rozszerzającego powyższą specyfikację, poprzez np.: zastosowanie dziedziczenia klas, polimorfizmu i metod wirtualnych, tak aby mieć dwa różne rodzaje kibiców zapisanych w postaci dwóch różnych klas dziedziczących z klasy Kibic, np. jedna podklasa liczy zadowolenie z koła o promieniu km jak wyżej, zaś druga podklasa liczy zadowolenie na podstawie kwadratu o boku km. inne rozszerzenia programu ustalone z prowadzącym. 5