Seperate into diffrent Files

This commit is contained in:
Matti 2024-11-11 22:47:51 +01:00
parent e274b6b218
commit a071a17043
7 changed files with 370 additions and 0 deletions

10
ActualMain.cpp Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include "Aufg1/forLoop.h"
#include "Aufg2/GuestList.h"
#include "Aufg3/Phonebook.h"
int main() {
// Aufg1Main();
// Aufg2Main();
Aufg3Main();
}

29
Aufg1/forLoop.cpp Normal file
View File

@ -0,0 +1,29 @@
#include <cstdio>
#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();
}

10
Aufg1/forLoop.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef Aufg1FORLOOP_H
#define Aufg1FORLOOP_H
void counter();
void alphabet();
void Aufg1Main();
#endif //Aufg1FORLOOP_H

61
Aufg2/GuestList.cpp Normal file
View File

@ -0,0 +1,61 @@
#include "GuestList.h"
#include <iostream>
#include <vector>
/*
* 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<std::string> &Myvector) {
for (std::string name : Myvector)
{
std::cout << name
<< std::endl;
}
}
void Aufg2Main()
{
std::vector<std::string> 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;
}
}
}

22
Aufg2/GuestList.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef Aufg2GUESTLIST_H
#define Aufg2GUESTLIST_H
#include <string>
#include <vector>
/*
* GästeListe
*
* Konsoleninput zur Wahl Liste verlängern/ausgeben/Ende
*/
void showMenu();
void getInput(int &input);
void printAllInVector(std::vector<std::string> &Myvector);
void Aufg2Main();
#endif //GUESTLIST_H

198
Aufg3/Phonebook.cpp Normal file
View File

@ -0,0 +1,198 @@
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
typedef struct contacts{
std::string firstName;
std::string lastName;
int number;
} Kontaktdaten;
void addContact(Kontaktdaten* person, std::vector<Kontaktdaten*> *Telefonbuch) {
Telefonbuch->push_back(person);
// std::vector<Kontaktdaten *> buch = *Telefonbuch;
// buch.push_back(person);
}
void deleteAllContacts(std::vector<Kontaktdaten*> *Telefonbuch) {
for (Kontaktdaten* pointer: *Telefonbuch) {
delete pointer;
}
}
void printAllContacts(std::vector<Kontaktdaten*> *Telefonbuch) {
for (Kontaktdaten * personpointer: *Telefonbuch) {
Kontaktdaten person = *personpointer;
std::cout << person.firstName << " " << person.lastName << " " << person.number << std::endl;
}
}
void saveAllContacts(std::vector<Kontaktdaten*> *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<Kontaktdaten*> *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<contacts*> * 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<contacts*> * 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<Kontaktdaten*> 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;
}

40
Aufg3/Phonebook.h Normal file
View File

@ -0,0 +1,40 @@
#ifndef PHONEBOOK_H
#define PHONEBOOK_H
#include <string>
#include <vector>
typedef struct contacts Kontaktdaten;
void addContact(Kontaktdaten* person, std::vector<Kontaktdaten*> *Telefonbuch);
void deleteAllContacts(std::vector<Kontaktdaten*> *Telefonbuch);
void printAllContacts(std::vector<Kontaktdaten*> *Telefonbuch);
void saveAllContacts(std::vector<Kontaktdaten*> *Telefonbuch, std::string *fileName);
int exponentiate(int base, int exponent);
int intStringToInt(std::string input);
void readContactsFromFile(std::vector<Kontaktdaten*> *Telefonbuch, std::string *fileName);
void addFirstSetOfContacts(std::vector<contacts*> * Telefonbuch);
void addSecondSetOfContacts(std::vector<contacts*> * 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