diff options
author | lonkaars <loek@pipeframe.xyz> | 2022-09-20 14:32:30 +0200 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2022-09-20 14:32:30 +0200 |
commit | 65a021b35340150aa6331c4b482ebfb88446be57 (patch) | |
tree | dd44675dfb118e604d6938f1f1168caed57af6ab | |
parent | afe7337bd1230dfbed207ead0655f3b8a2362180 (diff) |
week 4 huiswerk toegevoegd
-rw-r--r-- | week-4/Persoon.cpp | 22 | ||||
-rw-r--r-- | week-4/Persoon.h | 16 | ||||
-rw-r--r-- | week-4/Spel.cpp | 29 | ||||
-rw-r--r-- | week-4/Spel.h | 18 | ||||
-rw-r--r-- | week-4/main.cpp | 26 | ||||
-rw-r--r-- | week-4/makefile | 24 |
6 files changed, 135 insertions, 0 deletions
diff --git a/week-4/Persoon.cpp b/week-4/Persoon.cpp new file mode 100644 index 0000000..de5195d --- /dev/null +++ b/week-4/Persoon.cpp @@ -0,0 +1,22 @@ +#include "Persoon.h" + +bool Persoon::operator < ( const Persoon& persoon ) const { + return naam < persoon.naam; +} + +Persoon::Persoon(std::string naam) { + this->naam = naam; +} + +const std::string& Persoon::getNaam() const { + return naam; +} + +int Persoon::getLeeftijd() const { + return leeftijd; +} + +void Persoon::setLeeftijd(int leeftijd) { + this->leeftijd = leeftijd; +} + diff --git a/week-4/Persoon.h b/week-4/Persoon.h new file mode 100644 index 0000000..df4a3f2 --- /dev/null +++ b/week-4/Persoon.h @@ -0,0 +1,16 @@ +#pragma once + +#include <string> + +class Persoon { + public: + Persoon(std::string naam); + const std::string& getNaam() const; + int getLeeftijd() const; + void setLeeftijd(int leeftijd); + bool operator < (const Persoon& other) const; + + private: + std::string naam; + int leeftijd; +}; diff --git a/week-4/Spel.cpp b/week-4/Spel.cpp new file mode 100644 index 0000000..5ddc355 --- /dev/null +++ b/week-4/Spel.cpp @@ -0,0 +1,29 @@ +#include "Spel.h" + +Persoon* Spel::getPersoon(const std::string naam) const { + auto iFind = scores.find(naam); + if (iFind == scores.end()) + return nullptr; + else + return const_cast<Persoon*>(&iFind->first); +} + +void Spel::setScore(std::string naam, int score) { + scores[naam] = score; +} + +void Spel::addScore(std::string naam, int score) { + scores[naam] += score; +} + +int Spel::getScore(std::string naam) const { + auto iFind = scores.find(naam); + if (iFind == scores.end()) + return 0; + else + return iFind->second; +} + +std::map<Persoon,int>& Spel::getScores() { + return scores; +} diff --git a/week-4/Spel.h b/week-4/Spel.h new file mode 100644 index 0000000..9ed04ba --- /dev/null +++ b/week-4/Spel.h @@ -0,0 +1,18 @@ +#pragma once + +#include <string> +#include <map> + +#include "Persoon.h" + +class Spel { + public: + void setScore(std::string naam, int score); + void addScore(std::string naam, int score); + int getScore(std::string naam) const; + Persoon* getPersoon(std::string naam) const; + std::map<Persoon,int>& getScores(); + + private: + std::map<Persoon, int> scores; +}; diff --git a/week-4/main.cpp b/week-4/main.cpp new file mode 100644 index 0000000..b81a711 --- /dev/null +++ b/week-4/main.cpp @@ -0,0 +1,26 @@ +#include "Spel.h"
+#include "Persoon.h"
+
+#include <iostream>
+
+int main()
+{
+ Spel spel;
+ spel.setScore("Bert", 15);
+ std::cout << spel.getScore("Bert") << std::endl; // uikomst: 15
+ Persoon *bert = spel.getPersoon("Bert");
+ bert->setLeeftijd(103);
+ spel.addScore("Bert", 16);
+ std::cout << spel.getScore("Bert") << std::endl; // uikomst: 31
+ bert = spel.getPersoon("Bert");
+ std::cout << bert->getLeeftijd() << std::endl; // uikomst: 103
+ spel.setScore("Joan", 512);
+ spel.setScore("Arthur", 1024);
+ for ( auto pair : spel.getScores() )
+ {
+ std::cout << pair.first.getNaam() << "\t"
+ << pair.first.getLeeftijd() << "\t"
+ << pair.second << std::endl;
+ }
+ return 0;
+}
diff --git a/week-4/makefile b/week-4/makefile new file mode 100644 index 0000000..3b71b5b --- /dev/null +++ b/week-4/makefile @@ -0,0 +1,24 @@ +CC = gcc +LD = gcc +RM = rm -f +TARGET = main + +LFLAGS += -lstdc++ + +SRCS := $(wildcard *.cpp) +OBJS := $(patsubst %.cpp,%.o, $(SRCS)) + +all: main + +%.o: %.cpp + $(CC) -c $(CFLAGS) $< -o $@ + +$(TARGET): $(OBJS) + $(LD) $^ $(LFLAGS) -o $@ + +clean: + $(RM) $(TARGET) $(OBJS) + +compile_commands: clean + compiledb make + |