Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Podstawoweelementyikonstrukcje
23
Analizaprogramu.Stałeznakoweznak1iznak2sązdefiniowanezkwalifikatoremconst.
Wfunkcjimainzadeklarowanozmienneznak3izntypuchar.Ponieważsątozmienneautoma-
tyczne,ichwartościpoczątkowesąprzypadkowe.Pierwszainstrukcjawyjściawdrugim
wierszuekranuwyświetlanapisiwartośćzmiennejznak1,tj.ćA’.Instrukcjacout.put(znak2)
drukujeznak2,tj.znaktabulacji.Kolejnainstrukcjawyjściadrukujewtymsamymwierszu
tekstpoznakutabulacji.Wprowadzanązklawiaturywartośćkoduzmiennejznak3(kodznaku
ćB’),którywASCIIjestrówny66)odczytujezestandardowegostrumieniawejściowegocin
funkcjaskładowaget(znak3),awyświetlająnaekraniefunkcjaskładowaput(znak3).Następna
instrukcjapobierazbuforawejściowegozapomocąfunkcjiget(zn)znakćB’dozmiennejzn.
Ponieważjednakdlawprowadzeniategoznakudozmiennejzntrzebabyłonacisnąćklawisz
<Enter>,todobuforawejściowegoopróczznakućB’zostałwpisanyznaknowegowierszać\n’
iwłaśniekodtegoznaku(tj.wartość10)wyświetliłanastępnainstrukcjawyjścia.Terazbufor
wejściowyjestjużpustyiwywołaniefunkcjibezargumentowejget()wprowadzidoniego–po
naciśnięciuklawiszazliterąCinastępnie<Enter>–kod67(dlaznakućC’)orazkod10(dla
znakuć\n’).Pierwszyznichzostaniewpisanydozmiennejzniwyświetlonyinstrukcjąwyjścia,
zaśdrugipozostaniewbuforzewejściowym.Ostatniedwieinstrukcjeprzedreturn,
cin.ignore()orazcin.get(),zapobiegajązamknięciuoknazwynikamidziałaniaprogramu:
cin.ignore()pobierapozostawionypoostatniejoperacjicin.get()znakć\n’ipomijago,opróż-
niającbuforwejściowy,cin.get()zaśoczekujenanaciśnięcieklawiszadowolnegoznakuipo
nim<Enter>,bądźtylko<Enter>.
$Uwaga!Buforwejściowy(przyczytaniuzklawiaturylubzpliku)jesttoniewielki,ciągły
obszarpamięci,organizowanyiutrzymywanyprzezsystemoperacyjny.Jeżeliczytamy
zklawiatury,tozadaniemtegobuforajestchwiloweprzechowywaniekodówznaków
(naciśniętychklawiszy),ażdonaciśnięciaprzezużytkownikaklawisza<Enter>;dzięki
temunastępujewyrównaniemałejszybkościwprowadzaniaznakówzklawiaturyzdużą
szybkościąwczytywaniaznakówdostrumieniawejściowegocin.Ponaciśnięciuklawisza
<Enter>systemprzesyłaznakizbuforaklawiaturydostrumieniacin.
1.6.3.
Stałerzeczywiste
Stałarzeczywistajestreprezentacjąwartościtypudouble,longdoublelubfloatinależy
dopodzbioruliczbrzeczywistych.Stałątypudoublemożnazapisywaćwnotacjidziesiętnej
zkropkądziesiętną,np.0.0,2.8,–84.17,.345lubwnotacjiwykładniczej,np.1.18e8,3.1415E–3,
–3e12,gdzieznakelubEoznaczapodstawępotęgi10,adodatnialubujemnaliczbapotym
znakujestwykładnikiempotęgi.Dlatypufloat(pojedynczejprecyzji)dodajemypozapisie
liczbyspecyfikatorflubF,np.–4.17f,
.28F(bezspecyfikatorafstałajest–domyślnie–typu
double),adlatypulongdoubledodajemyllubL:np.1.0L,3.14159e–3L.
Przykład1.6
#iΠclude<iostream.h!
coΠstfloatf1=1.123456789f;
coΠstdoubled1=1.123456789E8;
coΠstdoubled2=.123456789;
iΠtmaiΠ(){
cout<<Wartoscf1=<<f1;
cout.setf(ios..scieΠtific);
cout.precisioΠ(8);
cout<<?ΠWartoscd1.<<d1;