// laske2.cpp // Laskee tiedostossa olevien sanojen lukumaaran // Toetustus dynaamisella taulukolla. // Projektiin: laske.cpp, ALI\mjonotpp.cpp, ALI\mjonot.c (, ALI\vstring.cpp) // 14.3.2000/vl // #include #include #include using namespace std; #include "mjonotpp.h" class cSana { string teksti; int lkm; public: cSana() { teksti = ""; lkm = 0; } void aseta(const string &s) { teksti = s; lkm = 1; } int oletko(const string &mika) const { if ( teksti == mika ) return 1; return 0; // return teksti == mika; } void lisaa() { lkm++; } void tulosta(ostream &os) const { os << teksti << " = " << lkm << "\n"; } }; const MAX_SANOJA = 10; class cSanat { int max_lkm; int lkm; cSana *alkiot; // M // void operator=(const cSanat &) { } cSanat(const cSanat &) { } public: cSanat(int imax_lkm=MAX_SANOJA) { lkm = 0; alkiot=new cSana [imax_lkm]; // M max_lkm = imax_lkm; } ~cSanat() { delete [] alkiot; // U } void lisaa(const string &s); void lisaa_rivi(string s); void tulosta(ostream &os) const ; void lue_tiedosto(const string &nimi); }; void cSanat::lisaa(const string &s) { for (int i=0; i= max_lkm ) return; alkiot[lkm].aseta(s); // alkiot[lkm].lisaa(); lkm++; } void cSanat::lisaa_rivi(string rivi) { string sana; while ( rivi != "" ) { sana = erota(rivi,' '); lisaa(sana); } } void cSanat::lue_tiedosto(const string &nimi) { ifstream fi(nimi.c_str()); if ( !fi ) return; string rivi; while ( getline(fi,rivi) ) lisaa_rivi(rivi); // k„sittele rivi } void cSanat::tulosta(ostream &os) const { for (int i=0; i