main

by mai on February 26th, 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];
    int vater[800];
};
 
struct personen person[800];
int verarbeitePerson();
void druckePerson(int ordnungsnr1);
int verarbeiteBeziehung();
int ordnungsnr2;
 
enum zustand {inOrdnungsnr1, imNamen, inID, inURL, anzahl};
 
 
 
int main()
{
int i;
bool aktiv, gefunden;
char ident[100];
 
aktiv = true;
 
while (aktiv != false) {
cout << "Nach welcher Person suchen Sie? (ID) ";
cin >> ident;
 
 
       for (int m=0; m<i; m++)
        {
        gefunden=false;
        if (strcmp(person[i].id, ident)==0) gefunden = true;
        }
 
       if (gefunden==true)
        {
        verarbeitePerson();
        verarbeiteBeziehung();
        druckePerson(i);
        cout << endl;
        }
}
}
 
 
 
int verarbeitePerson()
{
ifstream datei;
char puffer[100], zeichen;
int zaehler;
enum zustand zustand;
 
datei.open("personen.txt");
 
if(!datei)
        {
        cout << "Die Datei konnte nicht gefunden werden." << endl;
        return 1;
        }
 
zustand=inOrdnungsnr1;
zaehler=0;
 
int i=0;
for (datei.get(zeichen);!datei.eof();datei.get(zeichen))
    {
    switch(zeichen)
        {
        case '(':
        puffer[zaehler]='\0';
        strcpy(person[i].name,puffer);
        zustand=inID;
        zaehler=0;
        break;
 
        case ')':
        puffer[zaehler]='\0';
        strcpy(person[i].id,puffer);
        zustand=inURL;
        zaehler=0;
        break;
 
        case '"':
        puffer[zaehler]='\0';
        if (zustand==inOrdnungsnr1)
            {
            puffer[zaehler]='\0';
            zaehler=0;
            i++;
            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 i)
{
int j;
 
    cout << person[i].name << "hat die Identifikation: " << person[i].id << " und hat folgende Patenschaften uebernommen " << endl;
 
    for (j=0; j<800;j++)
    {
        if (person[i].vater[j]==0) continue;
        else cout << person[i].vater[j] << " Patenkind(er)von " << person[j].name << 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, anzahl;
for (datei.get(zeichen);!datei.eof();datei.get(zeichen))
    {
    switch(zeichen)
    {
    case ' ':
    if (zustand==1){
    puffer[zaehler]='\0';
    ordnungsnr1=atoi(puffer);
    zustand=2;
    zaehler=0;
    break;
    }
 
    else if (zustand==2){
    puffer[zaehler]='\0';
    ordnungsnr2=atoi(puffer);
    zaehler=0;
    zustand=3;
    break;
    }
 
    else if (zustand==0){
    break;
    }
 
    case '\n':
    puffer[zaehler]='\0';
    anzahl=atoi(puffer);
    person[ordnungsnr1].vater[ordnungsnr2]=anzahl;
    zustand=0;
    zaehler=0;
    break;
 
    default:
    puffer[zaehler]=zeichen;
    zaehler++;
    if (zustand==0) zustand=1;
    break;
    }
    }
}
 

Leave a Reply

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

Subscribe to this comment feed via RSS