Koduülesanded
Ülesannete lahendused paiguta faili lugemine.h
. Esita ainult see fail. Operaatorite ülelaadimised tee otse klassi sees.
1. Hulk objektidest
Kirjuta klass Hoia
, kus on üks avalik isendiväli el
, mis hoiab string
tüüpi väärtust. Klassis on konstruktor, mille parameetriks on string
tüüpi muutuja, ja väärtustab sellega isendivälja el
. 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. Funktsiooni parameetriteks on faili nimi ja viide (reference) 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