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