main
No notes
Syntax:
C++
#include <iostream> using namespace std; #include <string.h> #include <fstream> #include <stdlib.h> struct personen { char name[40]; char id[20]; }; struct personen person[800]; int verarbeitePerson(); void druckePerson(int ordnungsnr1); int verarbeiteBeziehung(); enum zustand {inOrdnungsnr1, imNamen, inID, inURL, anzahl}; int main() { int ordnungsnr1; cout << "Geben Sie eine Ordnungsnummer ein: "; cin >> ordnungsnr1; verarbeitePerson(); druckePerson(ordnungsnr1); verarbeiteBeziehung(); } int verarbeitePerson() { ifstream dat; char puffer[100], zeichen; int zaehler; enum zustand zustand; dat.open("personen.txt"); if(!dat) { cout << "Die Datei konnte nicht gefunden werden." << endl; return 1; } zustand=inOrdnungsnr1; zaehler=0; int ordnungsnr1=0; for (dat.get(zeichen);!dat.eof();dat.get(zeichen)) { switch(zeichen) { case '(': puffer[zaehler]='\0'; strcpy(person[ordnungsnr1].name,puffer); zustand=inID; zaehler=0; break; case ')': puffer[zaehler]='\0'; strcpy(person[ordnungsnr1].id,puffer); zustand=inURL; zaehler=0; break; case '"': puffer[zaehler]='\0'; if (zustand==inOrdnungsnr1) { puffer[zaehler]='\0'; zaehler=0; ordnungsnr1++; zustand=imNamen; } else if (zustand==inURL) { break; } break; case ' ': if (zustand==inOrdnungsnr1) break; else { puffer[zaehler]=zeichen; zaehler++; break; } break; case '\n': zustand=inOrdnungsnr1; zaehler=0; break; default: puffer[zaehler]=zeichen; zaehler++; break; } } } void druckePerson(int ordnungsnr1) { cout << ordnungsnr1 << ":" << person[ordnungsnr1].name << "hat die Identifikation: " << person[ordnungsnr1].id << endl; } int verarbeiteBeziehung() { ifstream datei; char puffer[100], zeichen; int zaehler; int zustand; /* zustand=0 : leer, zustand=1 : inOrdnungsnr1, zustand=2 : inOrdnungsnr2, zustand=3 : inAnzahl, */ datei.open("beziehungen.txt"); if(!datei) { cout << "Die Datei konnte nicht gefunden werden." << endl; return 1; } zustand=0; zaehler=0; int ordnungsnr1, ordnungsnr2, anzahl; for (datei.get(zeichen);!datei.eof();datei.get(zeichen)) { switch(zeichen) { case ' ': if (zustand==1){ puffer[zaehler]='\0'; ordnungsnr1=atoi(puffer); cout << "Ordnungsnummer 1: " << ordnungsnr1 << endl; zustand=2; zaehler=0; break; } else if (zustand==2){ puffer[zaehler]='\0'; ordnungsnr2=atoi(puffer); cout << "Ordnungsnummer 2: " << ordnungsnr2 << endl; zaehler=0; zustand=3; break; } else if (zustand==0){ break; } case '\n': puffer[zaehler]='\0'; anzahl=atoi(puffer); cout << "Anzahl: " << anzahl << endl << endl; zustand=0; zaehler=0; break; default: puffer[zaehler]=zeichen; zaehler++; if (zustand==0) zustand=1; break; } } }