2024-11-01 16:28:48 +00:00
# include <fstream>
2024-10-11 09:03:48 +00:00
# include <iostream>
2024-10-17 17:23:11 +00:00
# include <vector>
2024-10-11 09:03:48 +00:00
2024-10-11 09:32:01 +00:00
# pragma region Aufgabe1
/*
Ouput der Zahlen 10 bis 0 an die Konsole
Ouput aller Buchstaben des Alphabets
*/
2024-10-11 09:03:48 +00:00
void counter ( ) {
2024-10-11 09:32:01 +00:00
for ( int i = 10 ; i > 0 ; i - - )
2024-10-11 09:03:48 +00:00
{
printf ( " %d \n " , i ) ;
}
}
void alphabet ( ) {
char alpha [ 27 ] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ " ;
for ( char letter : alpha )
{
printf ( " %c " , letter ) ;
}
}
2024-10-11 09:32:01 +00:00
void Aufg1Main ( )
2024-10-11 09:03:48 +00:00
{
counter ( ) ;
alphabet ( ) ;
2024-10-11 09:32:01 +00:00
}
# pragma endregion
2024-10-17 17:23:11 +00:00
# pragma region Aufgabe2
2024-10-22 07:17:33 +00:00
/*
* GästeListe
*
* Konsoleninput zur Wahl Liste verlängern / ausgeben / Ende
*/
2024-10-17 17:23:11 +00:00
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 ;
}
}
2024-10-22 07:17:33 +00:00
void Aufg2Main ( )
2024-10-17 17:23:11 +00:00
{
std : : vector < std : : string > guestList ;
while ( true ) {
showMenu ( ) ;
int input ;
getInput ( input ) ;
std : : string name ;
switch ( input )
{
case 0 :
2024-10-22 07:17:33 +00:00
return ;
2024-10-17 17:23:11 +00:00
case 1 :
std : : cin > > name ;
guestList . push_back ( name ) ;
break ;
case 2 :
printAllInVector ( guestList ) ;
default :
break ;
}
}
}
# pragma endregion
2024-10-31 16:47:12 +00:00
# pragma region Telefonbuch
typedef struct contacts {
std : : string firstName ;
std : : string lastName ;
int number ;
} Kontaktdaten ;
2024-11-01 16:28:48 +00:00
void addContact ( Kontaktdaten * person , std : : vector < Kontaktdaten * > * Telefonbuch ) {
Telefonbuch - > push_back ( person ) ;
// std::vector<Kontaktdaten *> buch = *Telefonbuch;
// buch.push_back(person);
2024-10-31 16:47:12 +00:00
}
2024-11-01 16:28:48 +00:00
void printAllContacts ( std : : vector < Kontaktdaten * > * Telefonbuch ) {
for ( Kontaktdaten * personpointer : * Telefonbuch ) {
2024-10-31 16:47:12 +00:00
Kontaktdaten person = * personpointer ;
std : : cout < < person . firstName < < " " < < person . lastName < < " " < < person . number < < std : : endl ;
}
}
2024-11-01 16:28:48 +00:00
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 ( ) ;
}
2024-11-01 20:25:09 +00:00
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 ;
}
2024-11-01 16:28:48 +00:00
void readContactsFromFile ( std : : vector < Kontaktdaten * > * Telefonbuch , std : : string * fileName ) {
std : : ifstream infile ;
infile . open ( * fileName ) ;
2024-11-01 20:25:09 +00:00
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 ;
}
}
2024-11-01 16:28:48 +00:00
infile . close ( ) ;
}
2024-10-31 16:47:12 +00:00
/*
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 TelefonbuchMain ( ) {
2024-11-01 16:28:48 +00:00
std : : string fileName = " ../IO-Files/Telefonbuch.txt " ;
2024-10-31 16:47:12 +00:00
std : : vector < Kontaktdaten * > Telefonbuch ;
2024-11-01 20:25:09 +00:00
for ( int i = 0 ; i < 1 ; i + + ) {
readContactsFromFile ( & Telefonbuch , & fileName ) ;
std : : cout < < " Done with reading " < < i < < std : : endl ;
}
2024-11-01 16:28:48 +00:00
auto * Robin = new Kontaktdaten ;
auto * Saxo = new Kontaktdaten ;
auto * Jesus = new Kontaktdaten ;
2024-10-31 16:47:12 +00:00
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 " ;
2024-11-01 20:25:09 +00:00
/*
* 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 " ;
*/
2024-11-01 16:28:48 +00:00
addContact ( Robin , & Telefonbuch ) ;
addContact ( Saxo , & Telefonbuch ) ;
addContact ( Jesus , & Telefonbuch ) ;
2024-10-31 16:47:12 +00:00
2024-11-01 20:25:09 +00:00
// printAllContacts(&Telefonbuch);
2024-11-01 16:28:48 +00:00
saveAllContacts ( & Telefonbuch , & fileName ) ;
2024-10-31 16:47:12 +00:00
2024-11-01 16:28:48 +00:00
delete Robin ;
delete Saxo ;
delete Jesus ;
2024-10-31 16:47:12 +00:00
}
# pragma endregion
// Telefonnummern sollen in Datei gespeichert werden
// Beim Start vorhandene Einträge laden
// Typen sortieren mit Counter und Modulo
2024-10-11 09:32:01 +00:00
int main ( )
{
2024-10-31 16:47:12 +00:00
TelefonbuchMain ( ) ;
2024-10-11 09:03:48 +00:00
return 0 ;
}
// Programm ausführen: STRG+F5 oder Menüeintrag "Debuggen" > "Starten ohne Debuggen starten"
// Programm debuggen: F5 oder "Debuggen" > Menü "Debuggen starten"
// Tipps für den Einstieg:
// 1. Verwenden Sie das Projektmappen-Explorer-Fenster zum Hinzufügen/Verwalten von Dateien.
// 2. Verwenden Sie das Team Explorer-Fenster zum Herstellen einer Verbindung mit der Quellcodeverwaltung.
// 3. Verwenden Sie das Ausgabefenster, um die Buildausgabe und andere Nachrichten anzuzeigen.
// 4. Verwenden Sie das Fenster "Fehlerliste", um Fehler anzuzeigen.
// 5. Wechseln Sie zu "Projekt" > "Neues Element hinzufügen", um neue Codedateien zu erstellen, bzw. zu "Projekt" > "Vorhandenes Element hinzufügen", um dem Projekt vorhandene Codedateien hinzuzufügen.
// 6. Um dieses Projekt später erneut zu öffnen, wechseln Sie zu "Datei" > "Öffnen" > "Projekt", und wählen Sie die SLN-Datei aus.