02.1. Matematinės funkcijos
Iki šiol sprendėme paprastus uždavinius, kur užteko atlikti keturis pačius paprasčiausius aritmetinius veiksmus: sudėti, atimti, dauginti, dalinti. Kaip išspręstume uždavinį, kai skaičiuojant tektų ištraukti kvadratinę šaknį, apskaičiuoti reiškinio modulį, pakelti skaičių kvadratu? Problemos sprendimo būdas – reikia naudoti matematines C++ funkcijas.
Sudėtingesnių aritmetinių reiškinių reikšmių skaičiavimo taisyklės:
- C++ yra standartinės funkcijos (kvadratinės šaknies traukimo, kėlimo kvadratu, modulio skaičiavimo ir kitos), kurios naudojamos skaičiuojant sudėtingesnių aritmetinių reiškinių reikšmes. Funkcijų prisiminti nereikia. Prireikus funkcijas surasite lentelėje. Norint apskaičiuoti reikšmes, reikia įterpti failą cmath:
#include <cmath>
Eil. nr. | Matematine funkcija | Užrašymas C++ programavimo kalba |
---|---|---|
1 | ![]() |
sqrt(x) |
2 | ![]() |
pow(x, n) |
3 | ![]() |
fabs(x) |
- Skaičiuojant reiškinių reikšmes negalima praleisti nei vieno nei vienos aritmetinės operacijos ženklo. Kėlimas laipsniu keičiamas sandaugos skaičiavimu arba funkcija POW. Pvz. skaičiuojant reiškinio y = x2 – 1 reikšmę priskyrimo sakinio y = x2 – 1; rašyti negalima. Teisingi sakiniai būtų
y = x * x – 1; arba y = pow(x, 2) – 1;
- Jei reiškinyje yra trupmena, tai trupmenos skaitiklis rašomas skliaustuose, po to rašomas dalybos ženklas ir kituose skliaustuose rašomas trupmenos vardiklis. Pvz., priskyrimo sakinys:
y = (x + 9) / (x * x + 1);
atitinka trupmenos reikšmės skaičiavimą, kai x reikšmė yra žinoma.
- Skaičiuojant sudėtingesnių aritmetinių reiškinių reikšmes rezultatų tipas dažniausiai būna double.
- Išvedant duomenis, galima nurodyti jų išvedimo formatą. Tam naudojami manipuliatoriai – specialūs nurodymai, kurie įterpiami į išvedimo srautą. Manipuliatoriai yra dviejų tipų – su argumentais ir be jų. Norint pasinaudoti manipuliatoriais su argumentai, būtina prisijungti antraštinį failą iomanip:
#include <iomanip>
Dažniausiai naudojamų manipuliatorių sąrašas pateikiamas lentelėje.
Manipuliatorius | Paskirtis |
---|---|
left | Išvedami duomenys lygiuojami pagal kairįjį kraštą. |
right | Išvedami duomenys lygiuojami pagal dešinįjį kraštą. |
endl | Į srautą nusiunčiamas eilučių skyriklio simbolis \n ir išvalomas buferis. |
setw(int n) | Nustato išvedamų duomenų lauko plotį. |
setprecision (int n) | Nustato realiojo skaičiaus išvedamų skaitmenų skaičių n. |
Pavyzdžiui, įvykdę programos fragmentą:
int a = 45; double b = 123.258; cout << a; cout << setw(5) << a << “ “ << fixed << setprecision(2) << b;
Ekrane matysime:
4 |
5 |
4 |
5 |
1 |
2 |
3 |
. |
2 |
6 |
- Konstantą p rašant programas C++ programavimo kalba patogiausia apibrėžti iš anksto.
Išnagrinėkime uždavinio sprendimą:
Žinomas apskritimo spindulys r vienetų (r – realusis skaičius). Parašykite programą, skaičiuojančią apskritimo skersmenį d ir ilgį c. Pasitikrinkite: kai r = 2, turi būti spausdinama: Apskritimo skersmuo d = 4 vnt., apskritimo ilgis c = 12.57 vnt.
Paeksperimentuokite su šiuo sprendimu keisdami jo kodą. Kai tai padarysite - pamėginkite nuo pat pradžių išspręsti toliau esantį uždavinį žiūrėdami į aptartojo sprendimą.
Žinomaa kvadrato kraštinės ilgis a. Apskaičiuokite kvadrato įstrižainės ilgį d. Rezultatui palikite 2 skaičius po kablelio.Pasitikrinkite: kai a = 5, apskaičiuotas įstrižainės ilgis d = 7.07. Už šio uždavinio sprendimą gausite 50 taškų.
Parašę programą išmėginkite ją. Greičiausiai jums nepasiseks iš pirmo karto. Interaktyvus sprendimo įrankis parodys kokių atsakymų tikisi. Atlikite korekcijas atsižvelgdami net ir į tarpų skaičių.