Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Wortliste aus Datei laden und zufällig eins auswählen!

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
05.12.2005, 18:04 Uhr
Baweg



Hi,
ich will aus einer Datei mit mehreren Wörten zufällig eins auswählen und in einen String kopieren. Wie lade ich eine Datei und wie kann ich dann zufällig eines der Wörter übergeben?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.12.2005, 13:58 Uhr
kermit



hi,

ich lerne auch grade etwas c++ und hab mir die aufgabe mal vorgenommen.
geht sicher noch etwas besser und schoener aber ich wollte es erst mal "zu fuss" programmieren:

C++:
#include <iostream>
#include <fstream>

using namespace std;

//globale vars:
char worte[41] [99]; //array fuer 99 worte a 40 char
int wortanz=0;

//*******************************************
void aWort(string &wort) {
//*******************************************
// wort per referenz uebergeben,
// damit es anschliessend geloescht werden kann

if (wort=="") return; //nix da - nix tun
// test cout<<" wort: "<<wort<<endl;
// (worte[0] bleibt leer, der einfachheit halber )
++wortanz;
// gefundenes wort in array "kopieren"
//c_str macht ansi (null pointer ) string
// damit die zuweisung klappt
strcpy(worte [wortanz],wort.c_str());
wort="";
return;
}


//*******************************************
void suchWorte(string str) {
//*******************************************
// wenn kein leerzeichen,
//in wort zeichenweise kopieren

string wort=""; // tempvar

for (int i=0;i<=str.length();i++) {
   if (str[i]!=' ')
        wort=wort+str[i];
   else aWort(wort); // gefundenes wort ausgeben u. loeschen
}
aWort(wort);  
}

//*******************************************
int main() {
//*******************************************

char kdat[]="dat.txt";
string str;
srand(time(NULL));//s(tarte) random / zufallsgenerator

ifstream fi(kdat);
if (!fi.good()) { // fehler
   cout<<"datei "<<kdat<<" nicht da";
   system("pause");
   return(1);
}
// zeilenweise einlesen
while (!fi.eof()){
   getline(fi,str);
// cout<<"gelesen: "<<str<<endl;
   suchWorte(str);
}

cout<<"gefundene worte: "<<wortanz<<endl<<endl;
for (int i=1;i<=wortanz;i++)
   cout<<i<<". "<<worte[i]<<" "<<endl;

cout<<endl;
// % modulo = rest von  zufallsint / wortanz
int zufall=rand()%wortanz+1;
cout<<"ausgewaehlt Nr.: "<<zufall<<". "<<worte[zufall];

cout<<endl<<endl;
system("pause");

return 0;
}


Dieser Post wurde am 01.01.2006 um 10:37 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.12.2005, 19:22 Uhr
kermit



und jetzt noch mal mit vector klasse als container fuer die wortliste:


C++:
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

vector<string> worte;

//*******************************************
void suchWorte(string str) {
//*******************************************

   string wort; // tempvar, string wird automatisch initialisiert

   for (int i=0;i<=str.length();i++) {
// wenn kein leerzeichen,
//in "wort" zeichenweise kopieren
      if (str[i]!=' ') wort=wort+str[i];
      else
         if (wort>"")
             worte.push_back(wort),// in vector sammeln
             wort="";
   }
   if (wort>"") worte.push_back(wort);// wort am zeilenende
}

//*******************************************
int main() {
//*******************************************

   char kdat[]="dat.txt";// textdatei mit wort liste
   string str;
   srand(time(NULL));//s(tarte) random / zufallsgenerator

   ifstream fi(kdat);
   if (!fi.good()) { // fehler
      cout<<"datei >"<<kdat<<"< nicht da"<<endl;
      system("pause");
      return(1);
   }
  
   while (!fi.eof())   // zeilenweise einlesen
      getline(fi,str),
      suchWorte(str);

   int wortanz=worte.size();
   cout<<"gefundene worte: "<<wortanz<<endl<<endl;
   for (int i=0;i<wortanz;i++)
      cout<<i+1<<". "<<worte[i]<<" "<<endl;
      
   cout<<endl;
   int zufall=rand()%wortanz; // % modulo = rest von zufallsint / wortanz

   cout<<"ausgewaehlt Nr.: "<<zufall+1<<" "<<worte[zufall];
   cout<<endl<<endl;
   system("pause");

return 0;
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: