// lassanat.cpp // 13.3.2001/Vesa Lappalainen // // Ohjelma laskee kuinka monta kertaa kukin tiedostossa // oleva sana esiintyy // Tiedosto koostu riveist„, jolla kullakin rivill„ voi olla // useita toisistaan v„lily”nneill„ erotettuja sanoja. // // /* Tarvitaan luokat: cSana - tunnistaa onko sana - laskuri cSanat - rivin jakaminen osiin - etsi„ sana ja lis„t„ laskuria - lis„t„ sana jos sit„ ei viel„ ole */ #include #include using namespace std; class cSana { int lkm; string teksti; public: cSana() : lkm(0),teksti("") { } void aseta(const string &s) { if ( teksti == s ) { lkm++; } else { teksti = s; lkm = 1; } } void tulosta(ostream &os) const { os << teksti << " = " << lkm << "\n"; } void lisaa() { lkm++; } int oletko(const string &mika) const { if ( teksti == mika ) return 1; return 0; } }; const MAX_LKM = 5; class cSanat { int max_lkm; int lkm; cSana alkiot[MAX_LKM]; public: cSanat() { lkm = 0; max_lkm = MAX_LKM; } void tulosta(ostream &os) const; void lisaa(const string &s); }; void cSanat::tulosta(ostream &os) const { for (int i=0; i= max_lkm ) return; alkiot[lkm].aseta(s); lkm++; } int main(void) { cSanat sanat; string s = "kissa"; cout << "---------------\n"; sanat.lisaa(s); sanat.lisaa("kissa"); sanat.lisaa("kana"); sanat.lisaa("hemohess"); sanat.lisaa("hemohess"); sanat.lisaa("hemohess"); sanat.lisaa("hemohess"); sanat.lisaa("hemohess"); sanat.tulosta(cout); return 0; } #if 0 int main(void) { cSana sana; cout << "---------------\n"; sana.aseta("kissa"); sana.tulosta(cout); if ( sana.oletko("kissa") ) sana.lisaa(); sana.tulosta(cout); if ( sana.oletko("kana") ) sana.lisaa(); sana.tulosta(cout); return 0; } #endif #if 0 int main(void) { cSanat sanat; sanat.lue_tiedosto("sanat.txt"); sanat.tulosta(cout); return 0; } #endif