diff --git a/CMakeLists.txt b/CMakeLists.txt index 2341c0fff2bbc41dcfd8bb28bb680006a4085c0e..0507f6d511df2365c8e0fb98e88e366b53d47819 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(OOAD_Refactoring_Demo) +project(02-ifm1-refactoring) set(CMAKE_CXX_STANDARD 14) -add_executable(OOAD_Refactoring_Demo main.cpp) +add_executable(02-ifm1-refactoring main.cpp) diff --git a/RefactoringDemo.cpp b/RefactoringDemo.cpp index 88352fb54bf3ee1a2affbe890c42fbb8349abfb1..f43330969a1a7a2ad903d2fd9aff3b45b792932b 100644 --- a/RefactoringDemo.cpp +++ b/RefactoringDemo.cpp @@ -7,29 +7,56 @@ using namespace std; #include "DummyCode.cpp" /* End of code to be ignored */ -void pruefeRezepte(VorhandeneZutaten VZ){ - int i, j, k; - bool da; - for (i=0; i<getAnzahlRezepte(); i++){ - Rezept* r = getRezept(i); - cout << i << ". " << r->getRezeptName() << ": "; - da=true; - for (j = 0; j < r->getAnzahlRezeptZutaten(); j++) { - string z = r->getZutat(j); - bool OK= false; - for (k=0; k<VZ.getAnzahlZutaten();k++){ - if (z==VZ.getVorhandeneZutat(k)){ - OK= true; - break; - } - } - if (OK== false) { - da = false; - break; - } +bool istZutatVorhanden(VorhandeneZutaten &vorhandeneZutaten, const string &zutat); +bool sindAlleZutatenVorhanden(VorhandeneZutaten &vorhandeneZutaten, Rezept *rezept); + +void ausgabeRezept(int rezeptNummer, std::string name); +void ausgabeResultat(std::string result); + +void pruefeRezept(VorhandeneZutaten &vorhandeneZutaten, int i); + +// This is the original function that has been refactored: +void pruefeRezepte(VorhandeneZutaten vorhandeneZutaten){ + for (int i=0; i<getAnzahlRezepte(); i++){ + pruefeRezept(vorhandeneZutaten, i); + } +} + +void pruefeRezept(VorhandeneZutaten &vorhandeneZutaten, int i) { + Rezept* rezept = getRezept(i); + + ausgabeRezept(i,rezept->getRezeptName()); + + if (sindAlleZutatenVorhanden(vorhandeneZutaten, rezept)) { + ausgabeResultat(" mischbar!"); + } + else { + ausgabeResultat(" nicht mischbar!"); + } +} + + +void ausgabeRezept(int rezeptNummer, std::string name) { + cout << rezeptNummer << ". " << name << ": "; +} +void ausgabeResultat(std::string result) { + cout << result << endl; +} +bool sindAlleZutatenVorhanden(VorhandeneZutaten &vorhandeneZutaten, Rezept *rezept) { + for (int j = 0; j < rezept->getAnzahlRezeptZutaten(); j++) { + string zutat = rezept->getZutat(j); + if (!istZutatVorhanden(vorhandeneZutaten, zutat)) { + return false; + } + } + return true; +} + +bool istZutatVorhanden(VorhandeneZutaten &vorhandeneZutaten, const string &zutat) { + for (int k=0; k < vorhandeneZutaten.getAnzahlZutaten(); k++){ + if (zutat == vorhandeneZutaten.getVorhandeneZutat(k)){ + return true; } - if (da == true) { - cout << " mischbar\n"; } - else { cout << " nicht mischbar!\n"; } } -} \ No newline at end of file + return false; +} diff --git a/main.cpp b/main.cpp index 6b29d1746743d30c9c117ae1e442959d39c4785d..9620d1ddb98fec36663fad6699c9cde4203ec52c 100644 --- a/main.cpp +++ b/main.cpp @@ -5,5 +5,8 @@ int main() { std::cout << "This is the Refactoring Demo!" << std::endl; + VorhandeneZutaten vorhandeneZutaten; + pruefeRezepte(vorhandeneZutaten); + return 0; }