Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
60
20Wprowadzeniedoprogramowania
Rysunek2.9.Tworzeniehistogramuznaków:analizaprzypadkuużycia.Każdypojemnikzawieraliczbę
wystąpieńdanejlitery
HistogramtostrukturadanychskładającasięzNpojemników,zktórychkażdyzawiera
liczbęwystąpieńpowiązanegoztympojemnikiemzdarzenia.Każdypojemnikodpowiada
wnaszymprzykładzieokreślonejliterzelubjakiemuśinnemuzdarzeniuwogólności.Tak
więchistogramypowszechniestosujesiędomierzenialiczebnościwystąpieńjakichśzdarzeń.
Możnajeteżwykorzystaćdopomiaruprawdopodobieństwa-imwyższaliczebność,tymwyż-
szeprawdopodobieństwo.Początkowowszystkieliczebnościwhistogramiezostająustawio-
nena0.Następnieprzechodzimyprzezmierzonytekst,awystąpieniedanejliteryzwiększa
odpowiadającyjejpojemniko1.Takwięcwnaszymprzykładziepojemnikodpowiadający
literzeaoznaczonyzostajeliczbą3,ponieważwsłowieAlcatrazmamy3wystąpienialitery
aitd.(małeiwielkieliterytraktowanejednakowo).PoniższykodC++wykonujeteakcje.
Listing2.3.FunkcjamainCharHistogram(wCppBookCode,plikletter_histogram.cpp)
1
#include<iostream>
2
#include<string>
3
#include<vector>
4
5
//Wylistowanieichwtymmiejscupozwalapominąćstd::
6
usingstd::cout,std::cin,std::endl;
7
usingstd::string,std::vector;
8
9
10
intmain()
11
{
12
13
14
15
16
17
18
19
20
21
22
23
24
//Utwórzslotdlakażdejlitery,odiaidoizi
//Początkowodlakażdejznichustawliczniknao
vectorhistogram(lzl-lal+1,0);
stringin–str;
cin>>in–str;
in–str:"AGHUniversityofScienceandTechnology";
for(autoc:in–str)
//cprzyjmujekolejneliteryzin_str
if(std::isalpha(c))//isalpha(c)zwracatrue,jeślicjestalfanumeryczne
++histogram[std::tolower(c)-lal];
//++dodaje1dopozycjilitery