Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2060Przykładowyprojektzliczaniewystąpieńznakówwtekście
63
Terazznajdujemysięwewnątrzmain.Wwierszu[14]obiekthistogramtypu
vectorzostajezdefiniowanyizainicjalizowanyprzyużyciudwóchparametrów(obie
formy-std::vectorivector-wtymkontekściewporządku).Pierwszyznichto
izi-iai+1.Jakożelzlilaltoliczbowewartościkodoweostatniejipierwszej
literyangielskiegoalfabetu,odjęcietejdrugiejodtejpierwszejidodanie1dajełącznie
26liter.Niecopóźniejzobaczymy,jakwjednolitysposóbradzićsobiezmałymiiwielkimi
literami.Dziękitemupowstajestrukturaskładającasięz26liczników,cozostałopokazane
narysunku2.9.Drugiparametrinicjalizującydlahistogramto0-ustawiaonpoczątko-
wartośćlicznikówna0.vectorjestbardzoużytecznąstrukturądanych,któramoże
zawieraćwieleobiektów,aleotymsamymtypie.
Wwierszu[16]tworzonyjestobiektstringonazwiein–str(razjeszczemożemy
pominąćprefiksstd::).Jesttorównieżrodzajwektora,alewyspecjalizowanywprzecho-
wywaniuiprzetwarzaniuznaków(tekstu):
12
13
14
15
16
17
//Utwórzslotdlakażdejlitery,odiaidoizi
//Początkowodlakażdejznichustawliczniknao
vectorhistogram(lzl-lal+1,0);
stringin–str;
Obiektin–strjestpoczątkowopusty,alenietrwatodługo.Wwierszu[18]czekamy,
użytkownikwprowadziwoknieterminalazdanieiwciśnieklawiszEnter.Byłobyto
wystarczające,alejakożeuruchamiamytenprogramwkompilatorzeonline,którynie
przyjmujedanychwejściowychwprowadzanychprzezużytkownika,wwierszu[19]zako-
dowaliśmydoin–strnastałepewienprzykładowytekst:
18
19
cin>>in–str;
in–str:"AGHUniversityofScienceandTechnology";
Terazczasprzejśćdodziałania.Musimymiećdostępdowszystkichliterwobiekcie
in–striinkrementowaćhistogramnapozycjachpojemnikówodpowiadającychposzcze-
gólnymliterom.Takwięcjeśliliterąjestlal,indekspowinienwynosić0,jeślilbl,indeks
wynosi1,jeślilzl-25itd.Zauważmy,żedlaNelementówindeksybiegnąod0doN-1.
Abyuzyskaćdostępdokażdejlitery,wwierszu[21]utworzonajestpętlafor.Wniejautoc
znaczy,żecprzyjmowaćbędziewartośćkolejnychliterzezmiennejin–str,któraznajduje
siępodrugiejstroniedwukropka:.Dziękiautoniemusimyzawracaćsobiegłowytypem
c-zostanieonautomatyczniewywnioskowanyprzezkompilatornapodstawietypuliter
przechowywanychwin–str.
Wiersz[23]działapodnadzoremnajbliższejpętlifor.Takwięcdlakażdejliterycod-
najdujemyodpowiadającyjejindekswwektorzehistogramu,odejmująckodlal.Następnie
tenwpisjestzwiększanyo1poprzezwywołanieoperatora++.Abywszystkiemałeiwielkie
literybyłytraktowanetaksamo,każdaliterowawartośćzmiennejcjestkonwertowanana
małądziękiwywołaniufunkcjistd::tolower(tumusimyexpliciteposłużyćsięprefiksem