diff --git a/Makefile b/Makefile index 6d1895f..8937eb7 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,3 @@ all: g++ *.cpp -o lab3 - ./lab3 \ No newline at end of file + ./lab3 10 \ No newline at end of file diff --git a/README.md b/README.md index 9dd2196..a0d34b6 100644 --- a/README.md +++ b/README.md @@ -1 +1,17 @@ -#Lab 3 - Kontenery \ No newline at end of file +#Lab 3 - Kontenery + +##Czym są adaptery? +Adapter jest jednym z wzorców projektowych. Zadaniem adaptera jest przekształcanie interfejsów różnych klas w taki, który jest oczekiwany przez użytkownika. Innymi słowy adapter daje nam metody, za pomocą których możemy np. pobierać i zapisywać dane w określony sposób, ale sposób organizacji danych w adapterze jest nieznany. Dzięki adapterowi możemy zmienić klasę zarządzającą danymi nie zmieniając działania całej aplikacji. + +### Tablica + +### Stos + +### Kolejka + +### Słownik + +### Zbiór + +## Zadanie na 5 +Uzupełnij klasę `Slav` o metodę rozpoznającą płeć Słowianina/Słowianki, zwracając ją jako `enum`. Stwórz słownik (`map`) zwracający tablicę (`vector`) wskaźników na wszystkich mężczyzn, gdy podamy mu klucz odpowiadający mężczyźnie i tablicę wszystkich kobiet, gdy podamy mu klucz odpowiadający kobiecie. \ No newline at end of file diff --git a/Slav.cpp b/Slav.cpp new file mode 100644 index 0000000..3696bfc --- /dev/null +++ b/Slav.cpp @@ -0,0 +1,27 @@ +#include "Slav.h" +#include + +using namespace std; + +vector Slav::names; + +void Slav::init() +{ + srand(time(NULL)); + ifstream file("names.dat"); + copy(istream_iterator(file), + istream_iterator(), + back_inserter(names)); + file.close(); +} + +Slav::Slav() +{ + static int ret = (init(), 1); // Leniwa inicjalizacja + _name = names[rand() % names.size()]; +} + +string Slav::name() +{ + return _name; +} \ No newline at end of file diff --git a/Slav.h b/Slav.h new file mode 100644 index 0000000..4fa1db6 --- /dev/null +++ b/Slav.h @@ -0,0 +1,16 @@ +#pragma once +#include +#include + +using namespace std; + +class Slav +{ +private: + static void init(); + static std::vector names; + string _name; +public: + Slav(); + string name(); +}; \ No newline at end of file diff --git a/main.cpp b/main.cpp index c7cd443..ce1aa34 100644 --- a/main.cpp +++ b/main.cpp @@ -1,19 +1,22 @@ -// Kontenery sekwencyjne -#include // Łańcuch +// Kontenery +#include // Tablica +#include // Zbiór +#include // Słownik + // Adaptery #include // Stos #include // Kolejka -// Kontenery asocjujące -#include // Słownik -#include // Zbiór #include #include +#include "Slav.h" using namespace std; int main(int argc, char const *argv[]) { - /* code */ - return 0; + int n = atoi(argv[1]); + Slav *slavs = new Slav[n]; + for (int i = 0; i < n; ++i) + printf("[%i] %s\n", i, slavs[i].name().c_str()); } \ No newline at end of file diff --git a/names.dat b/names.dat new file mode 100644 index 0000000..09978be --- /dev/null +++ b/names.dat @@ -0,0 +1,148 @@ +Barnim +Bądzsław +Bąsław +Bdzigost +Bedgost +Będzieciech +Będzimir +Będziemir +Będziemirz +Będomir +Będzimysł +Biecsław +Biecław +Biezdar +Biezdziad +Biezpraw +Brzezpraw +Biezprzem +Biezprzym +Bezprym +Biezstryj +Biestryj +Biezstryk +Brzezstryk +Brzestryk +Biezuj +Biezwuj +Biezrząd +Blizbor +Blizborz +Bodzepor +Bogdał +Bogdaj +Bogodał +Bogdasz +Bogudan +Bogodan +Bogdan +Bohdan +Bodan +Bogodar +Bogudar +Boguchwał +Boguchał +Bogufał +Bogofał +Bogfał +Bogchwał +Bochwał +Bofał +Bogumił +Bogomił +Bogmił +Bogomieł +Bogumieł +Bogmieł +Bogumysław +Bogurad +Bogured +Bogusąd +Bogusław +Bogosław +Bohusław +Bogsław +Bogwiedz +Bogwidza +Bogowid +Bolebor +Boleczaj +Boleczest +Bolelut +Bolemir +Bolemysł +Bolesław +Bosław +Borzuj +Borzywuj +Borzygniew +Borzgniew +Borzymir +Borzysław +Borzywoj +Borzuj +Bożebor +Bożeciech +Bożciech +Bożydar +Bożdar +Bożysław +Bracsław +Bratomir +Bratumił +Bratomił +Bratmił +Bretomił +Bretmił +Braturad +Brodzisław +Brocsław +Barcsław +Barcław +Bronimir +Bromir +Bronisąd +Bronisław +Brosław +Brzezdob +Brzezdoma +Budziboj +Budzigniew +Budzimir +Budzisław +Budzsław +Budziwoj +Budźwoj +Budziwuj +Bygost +Bytomir +Bądzsława +Biedziesława +Biecsława +Biecława +Biezdziadka +Bogdała +Bogdana +Bogna +Boguchwała +Bogufała +Bogudać +Bogudarz +Bogodarz +Bogumiła +Bogmiła +Bogusława +Boguwłość +Bogowłość +Boguwola +Bohuwola +Bolemira +Bolesława +Bosława +Bożeciecha +Bożena +Bratumiła +Bratomiła +Bratmiła +Bronisława +Budzisława