diff --git a/ActualMain.cpp b/ActualMain.cpp new file mode 100644 index 0000000..a6e0f99 --- /dev/null +++ b/ActualMain.cpp @@ -0,0 +1,10 @@ +#include +#include "Aufg1/forLoop.h" +#include "Aufg2/GuestList.h" +#include "Aufg3/Phonebook.h" + +int main() { + // Aufg1Main(); + // Aufg2Main(); + Aufg3Main(); +} diff --git a/Aufg1/forLoop.cpp b/Aufg1/forLoop.cpp new file mode 100644 index 0000000..9318069 --- /dev/null +++ b/Aufg1/forLoop.cpp @@ -0,0 +1,29 @@ +#include +#include "forLoop.h" + +/* +Ouput der Zahlen 10 bis 0 an die Konsole +Ouput aller Buchstaben des Alphabets +*/ + +void counter() { + for (int i = 10; i > 0; i--) + { + printf("%d\n", i); + } +} + +void alphabet() { + char alpha[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + for (char letter : alpha) + { + printf("%c ", letter); + } +} + +void Aufg1Main() +{ + counter(); + alphabet(); +} diff --git a/Aufg1/forLoop.h b/Aufg1/forLoop.h new file mode 100644 index 0000000..fd8ec99 --- /dev/null +++ b/Aufg1/forLoop.h @@ -0,0 +1,10 @@ +#ifndef Aufg1FORLOOP_H +#define Aufg1FORLOOP_H + +void counter(); + +void alphabet(); + +void Aufg1Main(); + +#endif //Aufg1FORLOOP_H diff --git a/Aufg2/GuestList.cpp b/Aufg2/GuestList.cpp new file mode 100644 index 0000000..27d70c5 --- /dev/null +++ b/Aufg2/GuestList.cpp @@ -0,0 +1,61 @@ +#include "GuestList.h" + +#include +#include + +/* + * GästeListe + * + * Konsoleninput zur Wahl Liste verlängern/ausgeben/Ende + */ + + +void showMenu() { + std::cout << "1 to add Guest" + << std::endl + << "2 to print all Guests" + << std::endl + << "0 to exit" + << std::endl; +} + +void getInput(int &input) { + + std::cin >> input; +} + +void printAllInVector(std::vector &Myvector) { + for (std::string name : Myvector) + { + std::cout << name + << std::endl; + } +} + +void Aufg2Main() +{ + std::vector guestList; + + while (true) { + showMenu(); + + int input; + getInput(input); + + std::string name; + + switch (input) + { + case 0: + return; + case 1: + std::cin >> name; + guestList.push_back(name); + break; + case 2: + printAllInVector(guestList); + default: + break; + } + } +} diff --git a/Aufg2/GuestList.h b/Aufg2/GuestList.h new file mode 100644 index 0000000..45b202b --- /dev/null +++ b/Aufg2/GuestList.h @@ -0,0 +1,22 @@ +#ifndef Aufg2GUESTLIST_H +#define Aufg2GUESTLIST_H + +#include +#include +/* + * GästeListe + * + * Konsoleninput zur Wahl Liste verlängern/ausgeben/Ende + */ + + +void showMenu(); + +void getInput(int &input); + +void printAllInVector(std::vector &Myvector); + +void Aufg2Main(); + + +#endif //GUESTLIST_H diff --git a/Aufg3/Phonebook.cpp b/Aufg3/Phonebook.cpp new file mode 100644 index 0000000..75be466 --- /dev/null +++ b/Aufg3/Phonebook.cpp @@ -0,0 +1,198 @@ +#include +#include +#include +#include + +typedef struct contacts{ + std::string firstName; + std::string lastName; + int number; +} Kontaktdaten; + + +void addContact(Kontaktdaten* person, std::vector *Telefonbuch) { + Telefonbuch->push_back(person); + // std::vector buch = *Telefonbuch; + // buch.push_back(person); +} + +void deleteAllContacts(std::vector *Telefonbuch) { + for (Kontaktdaten* pointer: *Telefonbuch) { + delete pointer; + } +} + +void printAllContacts(std::vector *Telefonbuch) { + for (Kontaktdaten * personpointer: *Telefonbuch) { + Kontaktdaten person = *personpointer; + std::cout << person.firstName << " " << person.lastName << " " << person.number << std::endl; + } +} + +void saveAllContacts(std::vector *Telefonbuch, std::string *fileName) { + std::ofstream outfile; + outfile.open(*fileName); + + for (Kontaktdaten * personpointer: *Telefonbuch) { + Kontaktdaten person = *personpointer; + outfile << person.firstName << std::endl << person.lastName << std::endl << person.number << std::endl; + } + + outfile.close(); +} + +int exponentiate(int base, int exponent) { + int result = 1; + while (exponent > 0) { + result *= base; + exponent--; + } + return result; +} + +int intStringToInt(std::string input) { + int result = 0; + + int size = input.length(); + for(int i = 0; i < size; i++) { + int digit = input[size - 1 - i] - '0'; // -1 to consider 0-index // -'0' to get ascii indicies right + result += digit * exponentiate(10, i); // shift digit + } + + return result; +} + +void readContactsFromFile(std::vector *Telefonbuch, std::string *fileName) { + std::ifstream infile; + infile.open(*fileName); + + if (!infile.is_open()) { + std::cout << "File does not exist" << std::endl; + } + + std::string line; + int counter = 0; + Kontaktdaten * personpointer = new Kontaktdaten; + while (std::getline(infile, line)) { + + int attribute = counter % 3; + counter++; + + switch (attribute) { + case 0: + personpointer->firstName = line; + break; + case 1: + personpointer->lastName = line; + break; + case 2: + personpointer->number = intStringToInt(line); + addContact(personpointer, Telefonbuch); + personpointer = new Kontaktdaten; + break; + default: + std::cout << "This should never happen" << std::endl; + } + } + + infile.close(); +} + +void addFirstSetOfContacts(std::vector * Telefonbuch) { + auto * Robin = new Kontaktdaten; + auto * Saxo = new Kontaktdaten; + auto * Jesus = new Kontaktdaten; + + Robin->number = 123456; + Robin->firstName = "Robin"; + Robin->lastName = "Schnaiter"; + + Saxo->number = 987654; + Saxo->firstName = "Saxobastian"; + Saxo->lastName = "Brosch"; + + Jesus->number = 666; + Jesus->firstName = "Jesus"; + Jesus->lastName = "Nazarett"; + + addContact(Robin, Telefonbuch); + addContact(Saxo, Telefonbuch); + addContact(Jesus, Telefonbuch); +} + +void addSecondSetOfContacts(std::vector * Telefonbuch) { + auto * Bruno = new Kontaktdaten; + auto * Peter = new Kontaktdaten; + auto * Ralf = new Kontaktdaten; + + Bruno->number = 462581; + Bruno->firstName = "Bruno"; + Bruno->lastName = "Braunbär"; + + Peter->number = 110; + Peter->firstName = "Peter"; + Peter->lastName = "Polizei"; + + Ralf->number = 9999; + Ralf->firstName = "Ralf"; + Ralf->lastName = "Rotbart"; + + addContact(Bruno, Telefonbuch); + addContact(Peter, Telefonbuch); + addContact(Ralf, Telefonbuch); +} +/* +Kontaktdaten * createContact(std::string firstName, std::string lastName, int number) { + Kontaktdaten person = new Kontaktdaten; + + person.firstName = firstName; + person.lastName = lastName; + person.number = number; + + return & person; +} +*/ + +void Aufg3Main() { + std::string fileName = "../Aufg3/IO-Files/phonebook.thorsten"; + std::vector Telefonbuch; + + for (int i=0; i<1; i++) { + readContactsFromFile(&Telefonbuch, &fileName); + std::cout << "Done with reading " << i << std::endl; + } + + /* + *Robin->number = 123456; + Robin->firstName = "Robin der Neue"; + Robin->lastName = "Schnaiter"; + + Saxo->number = 987654; + Saxo->firstName = "Saxobastian"; + Saxo->lastName = "Broschianer"; + + Jesus->number = 6666666; + Jesus->firstName = "Jesus"; + Jesus->lastName = "Nazarett"; + */ + + // addFirstSetOfContacts(&Telefonbuch); + addSecondSetOfContacts(&Telefonbuch); + + // printAllContacts(&Telefonbuch); + saveAllContacts(&Telefonbuch, &fileName); + deleteAllContacts(&Telefonbuch); + + /* + * IDE beschwert sich bei Erstellen von * Robin über leaked Memory + * deleteAllContacts() sollte den Speicher befreien + * + * Zugriff auf *Robin nach delete Statement führt zu Fehler? + * -> IDE ist zu dumm? + */ + + // + // std::cout << Robin << std::endl; + // auto test = *Robin; + // std::cout << test.firstName << std::endl; + } diff --git a/Aufg3/Phonebook.h b/Aufg3/Phonebook.h new file mode 100644 index 0000000..90aec8a --- /dev/null +++ b/Aufg3/Phonebook.h @@ -0,0 +1,40 @@ +#ifndef PHONEBOOK_H +#define PHONEBOOK_H +#include +#include + +typedef struct contacts Kontaktdaten; + +void addContact(Kontaktdaten* person, std::vector *Telefonbuch); + +void deleteAllContacts(std::vector *Telefonbuch); + +void printAllContacts(std::vector *Telefonbuch); + +void saveAllContacts(std::vector *Telefonbuch, std::string *fileName); + +int exponentiate(int base, int exponent); + +int intStringToInt(std::string input); + +void readContactsFromFile(std::vector *Telefonbuch, std::string *fileName); + +void addFirstSetOfContacts(std::vector * Telefonbuch); + +void addSecondSetOfContacts(std::vector * Telefonbuch); +/* +Kontaktdaten * createContact(std::string firstName, std::string lastName, int number) { + Kontaktdaten person = new Kontaktdaten; + + person.firstName = firstName; + person.lastName = lastName; + person.number = number; + + return & person; +} +*/ + +void Aufg3Main(); + + +#endif //PHONEBOOK_H