Programowanie Obiektowew języku C++ Zadania L2

Podobne dokumenty
Programowanie Obiektowew języku C++ Zadania L2

Podstawy programowania w języku C++ Zadania

Programowanie Obiektowew języku C++ Zadania L4

Programowanie Obiektowew języku C++ Zadania L8

Programowanie Obiektowew języku C++ Zadania L4

Programowanie Obiektowew języku C++ Zadania L9

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

Październik Data Dzień tygodnia Szczęśliwy numerek [Wybierz inny miesiąc]

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Programowanie proceduralne w języku C++ Podstawy

Programowanie proceduralne w języku C++ Pętle, tablice

Programowanie obiektowe

2017 r. STOPA BEZROBOCIA r. STOPA BEZROBOCIA

ODCZYT STANU WODY NA RZECE DRWĘCY mierzone dla posterunku Nowe Miasto Lubawskie

Operacje wejścia/wyjścia (odsłona druga) - pliki

Dziedziczenie & W slajdach są materiały zapożyczone z

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

HARMONOGRAM ZAJĘĆ J. ANGIELSKI I SEMESTR rok akademicki 2015/2016 zimowy

Programowanie proceduralne w języku C++ Pojęcia podstawowe - kod źródłowy

GRUPA 1. Adres: Plac Kościuszki 13, Tomaszów Mazowiecki

Programowanie obiektowe

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Język C++ wykład VIII

Wyjątki (exceptions)

Karta Aktualizacji Nr 1/P/1/2014 Instrukcji Ruchu i Eksploatacji Sieci Dystrybucyjnej

ORGANIZATOR SPORTU DZIECI I MŁODZIEŻY W ŚRODOWISKU WIEJSKIM

Programowanie obiektowe i C++ dla matematyków

Tytuł pracy dyplomowej

Wolumen - część II Budynki Urzędu Gminy Kulesze Kościelne i Ochotniczej Straży Pożarnej Grodzkie Nowe w grupie taryfowej G

Techniki Programowania wskaźniki

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

dr inż. Jarosław Forenc

Wprowadzenie do programowania i programowanie obiektowe

Polimorfizm w pigułce

ROK 2007 Sprawozdanie o rynku pracy Styczeń

Wprowadzenie do programowania i programowanie obiektowe

IV SEKTOR - HARMONOGRAM WYWOZU ODPADÓW WIELKOGABARYTOWYCH Z BUDYNKÓW WIELORODZINNYCH NA 2015 ROK

Nazwa Grupy: Warsztaty plastyczne Rok szkolny:2017/2018. Wrzesień 2017

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

SEMESTR II. 08:15-10:30 Sieci komputerowe WYKŁAD 10:45-13:00 Sieci komputerowe LABORATORIUM 13: PRZERWA. mgr inż.

Wyliczanie wyrażenia obiekty tymczasowe

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

TEMAT : KLASY POLIMORFIZM

TEMAT : KLASY DZIEDZICZENIE

Wstęp do Programowania 2

PARADYGMATY PROGRAMOWANIA Wykład 3

Technik BHP. semestr II Ustalanie przyczyn i okoliczności wypadków Ustalanie przyczyn i okoliczności wypadków

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Wstęp do Programowania 2

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Szablon klasy std::vector

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Mechanizm dziedziczenia

Szablony funkcji i szablony klas

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie - wykład 4

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Kalendarz 2014 / 2015

Algorytmy, reprezentacja algorytmów.

Podstawy programowania obiektowego

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Terminy odbioru odpadów komunalnych z nieruchomości niezamieszkałych w 2017 roku. MICKIEWICZA 1/od 1 do 3, 4, 5, 7

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Operacje wejścia/wyjścia odsłona pierwsza

Wstęp do programowania

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Wymiar czasu pracy w kwartałach 2018r. pełny etat

Wstęp do Programowania 2

UCHWAŁA NR XXXIII/257/2016 RADY MIASTA KRAŚNIK. z dnia 22 grudnia 2016 r.

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Struktury Struktura polami struct struct struct struct

Programowanie Procedurale

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

C-struktury wykład. Dorota Pylak

HARMONOGRAM ZAJĘĆ EDUKACJA MUZYCZNA I PLASTYCZNA I SEMESTR rok akademicki 2015/2016 zimowy

Pośrednictwo pracy i aktywne formy przeciwdziałaniu bezrobociu styczeń 2002 r. Oferty pracy

Wstęp do programowania

Pośrednictwo pracy i aktywne formy przeciwdziałaniu bezrobociu styczeń 2003 r. Oferty pracy

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Transkrypt:

Programowanie Obiektowew języku C++ Zadania L2 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki Stosowanej i Modelowania 2 Uniwersytet im. Jana Kochanowskiego w Kielcach Wydział Matematyczno-Przyrodnmiczy Instytut Fizyki Zakład Informatyki Październik 2016 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 1 / 14

Spis treści 1 Zadanie 2 Podpowiedzi do zadania L2-1 Obliczanie dnia tgodnia dla konkretnej daty Podpowiedzi 3 Przykładowe rozwiązanie zadania L2-1 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 2 / 14

Zadanie L2-1 Zdefiniować klasy data i osoba tak, aby wykonanie programu głównego: int main(){ osoba JK("Jan", "Kowalski", data(5,4,1987)); osoba AN("Anna", "Nowak", data(23,11,2001)); cout << JK; cout << AN; } spowodowało wygenerowanie strumienia wyjściowego: Jan Kowalski - data ur.: Niedziela 5-4-1987 Anna Nowak - data ur.: Piatek 23-11-2001 UWAGA: Dzień tygodnia urodzin powinien być generowany automatycznie na podstawie daty urodzenia Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 3 / 14

Spis treści 1 Zadanie 2 Podpowiedzi do zadania L2-1 Obliczanie dnia tgodnia dla konkretnej daty Podpowiedzi 3 Przykładowe rozwiązanie zadania L2-1 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 4 / 14

Algorytm obliczania dni tygodnia Algorytm pozwala na szybkie obliczenie dnia tygodnia dla podanej daty dzień-miesiąc-rok. Wszystkie przedstawione operacje dzielenia są operacjami dzielenia całkowitego - (np. 5/2 = 2). Na wtępie wyznaczymy dzień tygodnia (d t1 ) dla pierwszego stycznia podanego roku (r) wg równania (4) - 0 dla poniedziałku, 1 dla wtorku,..., 6 dla niedzieli y = (r 1) mod 100 (1) c = (r 1) y (2) g = y + y/4 (3) ( (((c/100) ) ) ) d t1 = mod 4 5 + g mod 7 (4) Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 5 / 14

Tabela pierwszych dni miesięcy Teraz zdefiniujemy pomocniczą tabelę określającą wartość d p, tzn. liczbę dni roku do końca miesiąca poprzedzającego miesiąc bieżący. Tabela zdefiniowana jest dla roku nieprzestępnego. Miesiąc d p styczeń 0 luty 31 marzec 59 kwiecień 90 maj 120 czerwiec 151 Miesiąc d p lipiec 181 sierpień 212 wrzesień 243 październik 273 listopad 304 grudzień 334 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 6 / 14

Algorytm obliczania dni tygodnia Następnie wyznaczymy dzień roku d r jako sumę d p i bieżącego dnia miesiąca d m d r = d p + d m (5) Liczbę d r należy zwiększyć o 1 dla marca i następnych miesięcy roku przestępnego d rp = d r + d d (6) gdzie: d d = 1 dla marca i następnych miesięcy roku przestępnego, d d = 0 dla pozostałych mniesięcy Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 7 / 14

Rok przestępny Rok jest przestępny, gdy: 1 jest podzielny przez 4 i równocześnie nie jest podzielny przez 100 - np. rok 2012, 2 jest podzielny przez 400 - np. rok 2000. z powyższego wynika, że lata 1900, 2001, 1998 nie są przestępne. Indeks dnia tygodnia (d t ) z zakresu (0, 1,..., 6) wyznaczamy z zależności: d t = (d t1 + d rp 1) mod 7 (7) Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 8 / 14

Podpowiedzi 1 W celu umożliwienia dostępu do danych prywatnych klasy data przeciążanemu operatorowi operator«należy go zaprzyjaźnić z tą klasą - może to wyglądać tak: class data{ friend ostream& operator<<(ostream&, const data&); unsigned short d, m, r;... }; 2 Analogiczne zaprzyjaźnienie powinno się pojawić w klasie osoba - tym razem dla operatora: ostream& operator<<(ostream& str, const osoba& os); 3 operator«klasy osoba powinien skorzystać z usług operatora klasy data Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 9 / 14

Spis treści 1 Zadanie 2 Podpowiedzi do zadania L2-1 Obliczanie dnia tgodnia dla konkretnej daty Podpowiedzi 3 Przykładowe rozwiązanie zadania L2-1 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 10 / 14

Przykładowe rozwiązanie zadania L2-1/1 #include <iostream> #include <string> using namespace std; class data{ friend ostream& operator<<(ostream&, const data&); unsigned short d, m, r; string dt; string setdt(); public: data(unsigned short dz = 1, unsigned short ms = 1, unsigned short rk = 2000): d(dz), m(ms), r(rk), dt(setdt()){} }; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 11 / 14

Przykładowe rozwiązanie zadania L2-1/2 string data::setdt(){ string tydzien[] = {"Poniedzialek", "Wtorek", "Sroda", "Czwartek", "Piatek", "Sobota", "Niedziela"}; int dp[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; int y = (r - 1) % 100; int c = (r - 1) - y; int g = y + y / 4; int dt1 = ((((c /100) % 4) * 5) + g) % 7; } int dr = dp[m -1] + d; if (((r % 4 == 0 && r % 100!= 0) r % 400 == 0) && m > 2) dr++; return tydzien[(dt1 + dr - 1 ) % 7]; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 12 / 14

Przykładowe rozwiązanie zadania L2-1/3 class osoba{ friend ostream& operator<<(ostream&, const osoba&); string imie, nazwisko; data dur; public: osoba(string im = "", string nz = "", data du = data()): imie(im), nazwisko(nz), dur(du) {} }; ostream& operator<<(ostream& str, const data& d){ str << d.dt << " " << d.d << "-" << d.m << "-" << d.r; return str; } Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 13 / 14

Przykładowe rozwiązanie zadania L2-1/4 ostream& operator<<(ostream& str, const osoba& os){ str << os.imie << " " << os.nazwisko << " - data ur.: " << os.dur << endl; return str; } int main(){ osoba JK("Jan", "Kowalski", data(5,4,1987)); osoba AN("Anna", "Nowak", data(23,11,2001)); cout << JK; cout << AN; } Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2016 14 / 14