Skip to content

Commit

Permalink
Rozwiązanie
Browse files Browse the repository at this point in the history
  • Loading branch information
Xsenonn committed Apr 21, 2016
1 parent d3cc321 commit 60d90aa
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 5 deletions.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
all:
g++ *.cpp -o lab3
./lab3 3
g++ -std=c++11 *.cpp -o lab3
./lab3 9
6 changes: 6 additions & 0 deletions Slav.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "Slav.h"
#include <fstream>
#include <string>

using namespace std;

Expand All @@ -26,4 +27,9 @@ Slav::Slav()
string Slav::description()
{
return string(" ") + _name + " [" + to_string(_id) + "]";
}

gender Slav::Sex()
{
return (_name[_name.length()-1]=='a') ? woman : man;
}
10 changes: 10 additions & 0 deletions Slav.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
#pragma once
#include <string>
#include <vector>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <string>


using namespace std;

enum gender {man, woman};

class Slav
{
private:
Expand All @@ -24,4 +32,6 @@ class Slav
int id() { return _id; }

string description();

gender Sex();
};
65 changes: 62 additions & 3 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ void showMeAdapterSizes(queue <Slav *>, stack <Slav *>);

void containers(Slav *, int);
void adapters(Slav *, int);
void Show_Sex(Slav*, int);

int main(int argc, char const *argv[])
{
srand(time(NULL));
int n = 2 * atoi(argv[1]);
Slav *slavs = new Slav[n];
cout << "# Generated Slavs" << endl;
Expand All @@ -33,6 +35,7 @@ int main(int argc, char const *argv[])

containers(slavs, n);
adapters(slavs, n);
Show_Sex(slavs, n);

delete [] slavs;
}
Expand All @@ -48,21 +51,53 @@ void containers(Slav * slavs, int n)
printf("## vector\n");

// Umieść Słowian w losowej kolejności w wektorze.
vectorOfSlavs.push_back(slavs);
for(int i=1 ; i<n ; i++)
{
vectorOfSlavs.insert(vectorOfSlavs.begin() + rand()%vectorOfSlavs.size(), &slavs[i]);
}

// Wykorzystując iterator i funkcję description(), wyświetl wszystkich Słowian w wektorze

vector <Slav *>::iterator itr;
for( itr = vectorOfSlavs.begin();itr != vectorOfSlavs.end(); itr++)
{
cout << (*itr) -> description() << endl;
}
REPORT_CONTAINERS;
printf("## set\n");

// Przenieś wszystkich Słowian z wektoru do zbioru.
for(int i = n-1; i>=0 ; i--)
{
setOfSlavs.insert(vectorOfSlavs[i]);
vectorOfSlavs.pop_back();
}


REPORT_CONTAINERS;
printf("## map\n");

// Stwórz słownik tworzący pary Słowian, z tych znajdujących się w zbiorze, czyszcząc zbiór

set< Slav* >::iterator itr_s = setOfSlavs.begin();
set< Slav* >::iterator itr_removal_s = setOfSlavs.begin();
while(itr_s != setOfSlavs.end())
{
while(itr_s !=setOfSlavs.end())
{
mapOfSlavs[*itr_s++] = *itr_s++;
setOfSlavs.erase(itr_removal_s++);
setOfSlavs.erase(itr_removal_s++);
}
}
// Wykorzystując iterator, wyświetl wszystkie pary Słowian

map <Slav *, Slav*>::iterator itr_m = mapOfSlavs.begin();

while(itr_m != mapOfSlavs.end())
{
cout << (itr_m -> first) -> description() << " -> " <<(itr_m -> second) -> description() << endl;
itr_m++;
}

REPORT_CONTAINERS;
}

Expand All @@ -76,18 +111,42 @@ void adapters(Slav * slavs, int n)
printf("## queue\n");

// Umieść Słowian w kolejce.
for(int i = 0 ; i < n; i++)
{
queueOfSlavs.push(&slavs[i]);
}

REPORT_ADAPTERS;

printf("## stack\n");
// Przenieś Słowian z kolejki do stosu.

while(queueOfSlavs.empty() == 0)
{
stackOfSlavs.push(queueOfSlavs.front());
queueOfSlavs.pop();
}

REPORT_ADAPTERS;

// Wyświetl Słowian zdejmowanych ze stosu.

while(stackOfSlavs.empty() == 0)
{
cout << stackOfSlavs.top() -> description() << endl;
stackOfSlavs.pop();
}

REPORT_ADAPTERS;
}
void Show_Sex(Slav *slavs, int n)
{
map < gender, vector< Slav* > > mapOfGender;
for(int i = 0; i<n ; i++)
{
(slavs[i].Sex()== man ) ? mapOfGender[man].push_back(slavs+i) : mapOfGender[woman].push_back(slavs+i);
}
}

void showMeContainerSizes(vector <Slav *> vector, set <Slav *> set, map <Slav *, Slav*> map)
{
Expand Down

0 comments on commit 60d90aa

Please sign in to comment.