Main

by Mai on February 23rd, 2012
No notes
Syntax: C++
Show lines - Hide lines - Show in textbox - Download
#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];
void verarbeitePerson(ifstream& dat);
void druckePerson(int ordnungsnr1);
void verarbeiteBeziehung(ifstream& dat);
void druckeBeziehung (int ordnungsnr1, int ordnungsnr2);
int liesPerson();
int liesBeziehung();
 
enum zustand {inOrdnungsnr1, inOrdnungsnr2, imNamen, inID, inURL, anzahl};
 
int main()
{
int ordnungsnr1;
 
cout << "Geben Sie eine Ordnungsnummer ein: ";
cin >> ordnungsnr1;
liesPerson();
liesBeziehung();
}
 
int liesPerson()
{
ifstream dateip;
int ordnungsnr1;
 
dateip.open("personen.txt");
 
if(!dateip)
        {
        cout << "Die Datei konnte nicht gefunden werden." << endl;
        return 1;
        }
verarbeitePerson(dateip);
druckePerson(ordnungsnr1);
dateip.close();
}
 
void verarbeitePerson(ifstream& dat)
{
char puffer[100], zeichen;
int zaehler;
enum zustand zustand;
 
zustand=inOrdnungsnr1;
zaehler=0;
 
int ordnungsnr1=0;
for (;;)
    {
    dat.get(zeichen);
    if (dat.eof()) break;
    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 '"':
        cout << endl;
        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]='\0';
            zaehler=0;
            ordnungsnr1++;
            zustand=inOrdnungsnr1;
             break;
             }
 
        case '\n':
        cout << endl;
        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 liesBeziehung()
{
    ifstream dateip;
    int ordnungsnr1, ordnungsnr2;
 
    dateip.open("beziehungen.txt");
 
    if(!dateip)
            {
            cout << "Die Datei konnte nicht gefunden werden." << endl;
            return 1;
            }
    verarbeiteBeziehung(dateip);
    druckeBeziehung(ordnungsnr1, ordnungsnr2);
    dateip.close();
}
 
void verarbeiteBeziehung(ifstream& dat)
{
    char puffer[100], zeichen;
    int zaehler, ordnungsnr1, ordnungsnr2;
    enum zustand zustand;
 
    zustand=inOrdnungsnr1;
    zaehler=0;
 
    for (;;)
        {
        dat.get(zeichen);
        if (dat.eof()) break;
        switch(zeichen)
            {
            case ' ':
            if (zustand==inOrdnungsnr1){
                zustand=inOrdnungsnr2;
                break;
                }
            else if (zustand==inOrdnungsnr2){
                 puffer[zaehler]='\0';
                 ordnungsnr1=atoi(puffer);
                 zaehler=0;
                 zustand=anzahl;
                 break;
                 }
            else if (zustand==anzahl){
                puffer[zaehler]='\0';
                ordnungsnr2=atoi(puffer);
                zaehler=0;
                zustand=inOrdnungsnr1;
                break;
                }
 
            case '\n':
            cout << endl;
            break;
 
            default:
            puffer[zaehler]=zeichen;
            zaehler++;
            break;
            }
        }
}
 
void druckeBeziehung(int ordnungsnr1, int ordnungsnr2)
{
    cout << ordnungsnr1 << ":" << person[ordnungsnr1].name << "hat" << anzahl << "Patenkinder von " << person[ordnungsnr2].name << endl;
}
 

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS