Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Halloo Hilfe Für die Such-Searchmaschiene mit C++ in dem Struct

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.03.2005, 01:58 Uhr
cplus2group



Hallo

ich muss dringend eine suchmaschiene mit c++ schreiben,erst soll dies Programm ein txt Datei lesen, danach in diesem gelesenen Text Gruppe (z.B: AUT) und die Daten (z.B: Toader)suchen.
Das wichtigste ist: ich muss in dem Programm STRUKTUREN (struct) benutzen.
Mein Textdatei sieht wie folgendes aus und heisst plus.txt:

AUT==Toader, Joachim
TIT==Kulturwissenschaft, in Japan
der frühen fünfziger Jahre
SIG==2000

AUT==Kuschel, Margot
TIT==Politikwisenschaften in Österreich,
Wirtschaft: BWL, in:
Brigitte S. Huhn u. Helmut Klang (Hgg.), Frankreich
1999, S.235-278
JAH==1999
ORT==Frankreich
SIG==3456

Für das Ausgangsformat für die Gruppe werden die folgende code verwendet:

SIG ==> %S
AUT ==> %A
TIT ==> %T
JAH ==> %J
ORT ==> %O

Damit wird die Ausgabe so aussehen:

%A Toader, Joachim
%T Kulturwissenschaft, in Japan
der frühen fünfziger Jahre
%S 2000

%A Kuschel, Margot
%T Politikwisenschaften in Österreich,
Wirtschaftswachstum: Ein mikroökonomischer Ansatz, in:
Brigitte S. Huhn u. Helmut Klang (Hgg.), Frankreich
1999, S.235-278
%J 1999
%O Frankreich
%S 3456

Wenn das Programm mir fragt "Welche txt soll geöffnet werden?
Soll ich schreiben "plus.txt" damit wird einmal die Datei lesen.
Dann werde ich die Gruppe fragen "Welche Gruppe- z.B. TIT" und werde ich nochmal fragen "Was soll die Datei enthalten".


Am Ende die Ausgabe der Datei soll aussehen.

Ich habe für ein Programm geschrieben aber es funktioniert nicht wie ich möchte.


Ich brauche sehr dringend Info bittteeeeeee

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

Mit besten Grüssen

cplus2group
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.03.2005, 09:08 Uhr
typecast
aka loddab
(Operator)



--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: