000
29.03.2005, 02:03 Uhr
cplus2group
|
Die Quellcode ist /*
C++: |
#include <iostream> using namespace std; #include <stdlib.h> #include <fstream> #include <string>
struct search{ struct search *danach; char gruppe[200]; int gleichgleich; int name; } ; enum zustand {imGruppe,imGleichgleich,imNamen};
struct search *loadgruppe(ifstream &data); struct search *loaderhaltene(ifstream &data); struct search *searcherhaltene(struct search *das, char *zeichnung); struct search *suchediese(struct search *das, char *diese);
int main(){ char dataname[200], befehl[200]; struct search *das=NULL, *now;
ifstream data;
cout<<"Welche Datei soll geöffnet werden?"<<endl; cin.getline(dataname,200,'\n'); data.open(dataname);
if(!data){ cout<<"Datei"<<dataname<<" nicht lesbar."<<endl; return 0; }
das=loadgruppe(data);
for(;;){ cout<<"Bitte wählen Sie:"<<endl<< " n - Gruppe"<<endl<< " z - soll enthalten"<<endl<< " * - Programm beenden"<<endl; cin.getline(befehl,200,'\n');
switch(befehl[0]){ case 'n': cout<<"Geben Sie die Gruppe ein!"<<endl; cin.getline(befehl,200,'\n'); now=searcherhaltene(das,befehl); if (now!=NULL) cout<<"Die Gruppe"<<now->gleichgleich<<" enthält."<<endl; else cout<<"Die Gruppe ist nicht bekannt!"<<endl; break; case 'z': cout<<"Was soll enthalten einer Gruppe?"<<endl; cin.getline(befehl,200,'\n'); now=suchediese(das,befehl); if (now!=NULL) cout<<"Die Gruppe "<<now->gruppe<<now->name<<" enthaelt."<<endl; else cout<<"Zu diesem Daten gibt es keinen Eintrag!"<<endl;
break; case '*': return 0; default: cout<<"Befehl "<<befehl<<" verstehe nicht"<<endl; break; }
} { int x; cin >> x; }
}
struct search *loadgruppe(ifstream &data){ struct search *das=NULL, *now, *neu;
while(!data.eof()){ neu=loaderhaltene(data); if (neu!=NULL){ if (das==NULL) das=neu; else now->danach=neu; now=neu; } } return das; }
struct search *loaderhaltene(ifstream &data){ struct search *searchdas; char puffer[200],zeichen; int zaehler; enum zustand zustand;
searchdas=new struct search; searchdas->danach=NULL;
zustand=imGruppe; zaehler=0; for (;;) { data.get(zeichen); if (data.eof()) return NULL;
switch(zeichen){ case '=': puffer[zaehler]='\0'; zaehler=0; strcmp(searchdas->gruppe,puffer); zustand=imGleichgleich; break;
case ' ': if (zustand!=imGruppe){ puffer[zaehler]='\0'; zaehler=0; searchdas->gleichgleich=atol(puffer); return searchdas; zustand=imNamen;} return 0;
case '\n': if (zustand!=imNamen) puffer[zaehler]='\0'; zaehler=0; searchdas->name=atol(puffer); return searchdas; break; default: puffer[zaehler]=zeichen; zaehler++; break;}}}
struct search *searcherhaltene(struct search *das,char *zeichnung){ while(das!=NULL){ if(!strcoll(das->gruppe,zeichnung)) return das; das=das->danach; } return NULL; }
struct search *suchediese(struct search *das, char *diese){ int suchgleichgleich, suchname,i; char *start;
for (i=0;diese[i]==' ';i++); start=diese; for (;diese[i]!='=='&& diese[i]!='\0';i++); if(diese[i]=='\0'){ cout << "Dieses kann ich nicht lesen:"<<diese<< endl; return NULL; }
diese[i]='\0'; suchgleichgleich=atol(start); i++; start=diese+i; suchname=atol(start);
while(das!=NULL){ if (das->gleichgleich == suchgleichgleich && das->name== suchname) return das; das=das->danach; } return NULL; }
|
*/
Hilfe Bitteeee Bitteeee
[man] mit besten Grüssen cplus2group [/man] |