main

by marietta on February 23rd, 2012
No notes
Syntax: C++
Show lines - Hide lines - Show in textbox - Download
//Schritt 1: Person einlesen und Zeile ausgeben
#include <iostream>
using namespace std;
#include <string.h>
#include <string>
 
#include <stdlib.h>
#include <fstream>
 
struct person
{
char name[60];
char id[20];
char url[60]; //raus?
//int ordnungsnummer; //dient als zaehlvariable des array, raus aus struct
};
enum zustand {imNamen, inId, ignoriereUrl, vorOrdnungsnummer, inOrdnungsnummer}; //inUrl=Ignorieren
 
struct person personen [800];
int ordnungsnummer = 0; //Array Zaehlvariable
 
void druckePersonen();
void suchePersonen();
 
int main()
{
//struct person personen;
char puffer[100],zeichen;
int zaehler;
enum zustand zustand;
 
ifstream datei;
 
datei.open("personen.txt"); //ab hier auslagern
 
suchePersonen();
 
zustand=vorOrdnungsnummer;//Startzustand
zaehler=0;
for (;;)
{
    datei.get(zeichen);
    if (datei.eof())break;
    switch(zeichen)
    {
 
    case '"':
        break;
 
    case ' ':
 
        if (zustand == vorOrdnungsnummer)//entweder doppeltes Leerzeichen vor Ordnungnummer: dann ignorieren...
        {
            break;
        }
 
        if (zustand == inOrdnungsnummer)//oder Leerzeichen nach Ordnungsnummer, dann: war das die Ordnungsnummer
        {
         puffer[zaehler]='\0';
         zaehler=0;
         ordnungsnummer=atoi(puffer); //schreibe in Puffer, mache aus den Ziffern eine Zahl (personen.ordnungsnummer)
         zustand=imNamen; //erwarte Name der Person
         //cout << "Gelesen: " << "Ordnungsnummer: " << personen.ordnungsnummer << endl;
         break;
        }
 
        if (zustand==imNamen)// war das ein Name
        {
 
           datei.get(zeichen); //pruefe ob Leerzeichen letztes=also Ende des Namen ist: nimm Zeichen nach Leerstelle mit auf...
             if (zeichen=='(')            //...ist es ein ( ->ist Name zu Ende
             {
              puffer[zaehler]='\0';
              zaehler=0;
              strcpy(personen[ordnungsnummer].name,puffer);
              zustand=inId;//erwarte wir nun ID
              personen[ordnungsnummer].name; //im Array abspeichern
              //cout << "Gelesen: " << "Name: " << personen.name << endl;
             }
             else      //...ist es kein ( ->lege das Zeichen zurueck
             {
              datei.putback(zeichen);
              puffer[zaehler]=' ';
              zaehler++;
             }
           break;
        }
    case '(':
        zaehler=0;
        break; //ignoriere Klammer-auf
    case ')': //das war ID
        puffer[zaehler]='\0';
        zaehler=0;
        strcpy(personen[ordnungsnummer].id,puffer);
        zustand=ignoriereUrl;
        personen[ordnungsnummer].id;
        //cout << "Gelesen: " << "ID: " << personen.id << endl;
        break;
 
    case '\n':
        zaehler=0;
        zustand=vorOrdnungsnummer; //soll URL ignorieren
        break;
 
    default:
        if (zustand==vorOrdnungsnummer) { zustand=inOrdnungsnummer; }
        puffer[zaehler]=zeichen;
        zaehler++;
        break;
    }
}
datei.close();
    for (int i=0; i<800; i++)
    {
    druckePersonen[i];
    }
}
 
void druckePersonen(int i)
{
    cout << i << " Name: " << personen[i].name << " ID: " << personen[i].id << endl;
 
}
 
void suchePersonen(){
    int ausgabePerson;
 
    cout << "Welche Person möchten sie ausgeben?";
    cin >> ausgabePerson;
 
    druckePersonen(ausgabePerson);
}
 
 

Leave a Reply

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

Subscribe to this comment feed via RSS