Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2050Przykładowyprojektkalkulatorprocentuskładanego
t
55
oznaczaokreskapitalizacjiwmiesiącach(np.dlakapitalizacjikwartalnejtwynosi
3miesiące).
mtocałkowityczastrwaniainwestycjiwmiesiącach.
Spójrzmy,jaktodziaławpraktyce.Przypuśćmy,żemamydozainwestowania2500$,
rocznastopaoprocentowaniawynosi3,4%,azarównoczastrwaniainwestycji,jakiokres
kapitalizacjiwynoszą6miesięcy.Jakibędzienaszzysk?Jeśliwprowadzimywszystkiedane
dorównania2.3,dostaniemyC
112500$·(1+0,034/12·6)(6/6)2542,50$.Stądzyskwy-
niesieC
1-C
0142,50$.Niestety,wniektórychkrajachtenzyskjestopodatkowany,więc
naszainwestycjabędzieniecomniejlukratywna.
2.5.2.Implementacjakalkulatoraprocentuskładanego
Jesteśmyniemalgotowi,abyprzejśćdoimplementacji.Musimytylkodowiedziećsięjeszcze,
wjakisposóbzapisywaćrównaniatakiejak(2.3)wC++.Pisaniewyrażeńjestmniejwięcej
podobnedopisaniarównańwmatematyce.Musimyjednakpamiętaćodwóchprzeszko-
dach.Popierwsze,dlazachowaniaklarownościiuwzględnieniaróżnychterminaliwyra-
żeniamusząpasowaćdowierszalubwierszyczystegotekstu.Innymisłowy,indeksygórne
idolneniewchodząwgrę.Drugimograniczeniemjestliczbasymboli,zapomocąktórych
możnareprezentowaćoperatory.Stądteż,abyutworzyćniektóreoperatorywC++,symbole
znanezterminalazostanązesobąsklejone:+:,&&,::itd.Kompletnątabelęoperatorów
C++możnaznaleźćwpodrozdziale3.19.
Aotojakozapisujemyrównanie(2.3)jakowyrażenieC++:
C_i:C_o*std::pow(1.o+r/12.o*t,m/t);
Popierwsze,wszystkiesymboletakiejakC_i,r,titd.muszązostaćzdefiniowane-
toznaczymusząposiadaćjakiśtyp.Wnaszymprzypadkuwbudowanetypyfloatlub
doublepowinnyzostaćwybranedoreprezentowaniaułamków.Zmiennemusząteżzostaćza-
inicjalizowane.Podrugie,wC++niemaoperatorapotęgowania.Musimywięcwywołaćfunk-
cjęstd::powzbibliotekimatematycznejC++.Przyjmujeonadwaargumenty,anastępnie
zwracajakorezultatpierwszyargumentpodniesionydopotęgirównejdrugiemuargumentowi.
Funkcjataprzychodziwrazzgotowądoużyciabiblioteką,alemusimydaćznaćkompilato-
rowi,żezamierzamyjejużyć.Nakonieczauważmyteż,żewprzypadkustałychwartościza-
miast1napisaliśmy1.0,azamiast12napisaliśmy12.0.Zrobiliśmytak,bywykorzystaćformat
zmiennoprzecinkowyiuniknąćkonwersjizreprezentacjiwłaściwejdlaliczbcałkowitych.
Terazjesteśmyjużgotowidorozpoczęciaimplementacji.Rezultatwyglądatakjakpo-
niższykod,któryzostałpodzielonynaczęści,byułatwićjegoodczytanie.
Listing2.2.FunkcjamainzaplikacjiCompInterest(zplikumain.cpp)
1
#include<cmath>
//Abywykorzystaćfunkcjępow
2
#include<iostream>
//Abywykorzystaćstd::coutistd::cin
3
4
//Wprowadźnazwyobiektówwejściaiwyjściazprzestrzeninazwstd
5
usingstd::cout,std::cin,std::endl;