Koduülesanded
Ülesanded faili lugemine.h. Operaatori ülelaadimised teha otse klassi sees.
1. Hulk objektidest
Koosta klass Hoia, kus on üks isendiväli, mis hoiab string tüüpi väärtust. Konstruktorid ja muud funktsioonid koosta vajadusel. Koosta funktsioon loe_hoia järgmise signatuuriga
std::set<Hoia>& loe_hoia(std::string failinimi, std::set<Hoia>& st);
Funktsioon loeb failist sisse sõned ja teeb iga sõne korral Hoia objekti ja lisab selle funktsiooni parameetris näidatud hulka.
Näide 1.
Kui andmefailis andmed.txt on read
1 2 4 5 2 3 4 5
siis programmilõigu töö tulemuseks on
set<Hoia> s1{};
s1 = loe_hoia("andmed.txt", s1);
for (auto el : s1) {
cout << el << ' ';
}
| 1 2 3 4 5 |
Näide 2.
Kui andmefailis andmed1.txt on read
üks kaks kolm kaks neli üks kaks
siis programmilõigu töö tulemuseks on
set<Hoia> s1{};
s1 = loe_hoia("andmed1.txt", s1);
for (auto el : s1) {
cout << el << ' ';
}
| kaks kolm neli üks |
Vihje. Klassis Hoia tuleb üle defineerida operator<, et Hoia objektid oleksid võrreldavad. See välistab sama sisuga objektide lisamise hulka.
2. Sõnade sagedus
Koosta mallifunktsioon sõnade sagedustabeli leidmiseks. Funktsioon saab ette faili nime ja viite mallitüüpidega sõnastikule. Funktsiooni signatuur on järgmine:
template<typename T1, typename T2> std::map<T1, T2>& loe_failist(std::string failinimi, std::map<T1, T2>& m );
Funktsioon peab lugema failist reakaupa teksti, eraldama sõnadeks, teisendama väikesteks tähtedeks ja eemaldama kirjavahemärgid. Näiteks, faili sisu
Lumehelbeke tasa, tasa, hõljub aknale, tasa, tasa! Mis hõljub tasa?
korral on sõnastiku sisu peale funktsiooni tööd järgmine:
aknale : 1 hõljub : 2 lumehelbeke : 1 mis : 1 tasa : 5