$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Osnovne matematičke operacije

U prethodnoj lekciji videli smo kako možemo da ispisujemo razne poruke čiji tekst uvek navodimo između znakova navoda ("tekst poruke"). Zamisli da hoćemo da ispišemo koliko iznosi zbir neka dva broja. Sa dosadašnjim znanjem morali bismo da sa strane (na papiru ili pomoću kalkulatora) izračunamo taj broj, a tek onda pristupimo pisanju programa. Na primer, program koji ispisuje vrednost zbira brojeva 13579 i 24680 izgleda ovako:

#include <iostream>

using namespace std;

int main()
{
    cout << "Zbir brojeva 13579 i 24680 iznosi: " << 38259 << endl;
}

Bilo bi nam mnogo zgodnije kada bi računar mogao umesto nas da odradi računske operacije (u ovom slučaju sabiranje). Sledi primer kako možemo da napišemo program pomoću kojeg računar će automatski izračunati zbir koji nam je potreban. Obrati pažnju da se brojevi ne navode između navodnika.

#include <iostream>

using namespace std;

int main()
{
    cout << "Zbir brojeva 13579 i 24680 iznosi: " << 13579 + 24680 << endl;
}

Umesto navođenja rezultata koji je potrebno ispisati, objasnili smo računaru kako se taj rezultat dobija sabiranjem brojeva 13579 i 24680. Ovo je vrlo čest pristup u programiranju: uglavnom ne računamo mi sami već samo na neki način objasnimo šta želimo. Iz prethodnog primera vidiš da je simbol za sabiranje, kao i u matematici, +. Slično, simbol za oduzimanje je -, pa program koji računa i zbir i razliku izgleda ovako:

#include <iostream>

using namespace std;

int main()
{
    cout << "Zbir brojeva 13579 i 24680 iznosi: " << 13579 + 24680 << endl;
    cout << "Razlika brojeva 13579 i 24680 iznosi: " << 13579 - 24680 << endl;
} 

Kada ga prevedemo i izvršimo, program će ispisati:

Zbir brojeva 13579 i 24680 iznosi: 38259
Razlika brojeva 13579 i 24680 iznosi: -11101

Ukoliko simbol operacije napišemo unutar navodnika, on je deo teksta, pa se kao i sav drugi tekst samo ispisuje bez ikakvog izračunavanja. Probaj sam da izvršiš sledeći program i vidiš šta ispisuje:

#include <iostream>

using namespace std;

int main()
{
    cout << "7+3=" << 7+3 << endl; cout << "7-3=" << 7-3 << endl;
}

U programskom jeziku C++ (kao i u većini drugih programskih jezika) simbol za množenje je *. Hajde da dodamo i izračunavanje proizvoda u naš prethodni program:

#include <iostream>

using namespace std;

int main()
{
    cout << "7+3=" << 7+3 << endl;
    cout << "7-3=" << 7-3 << endl;
    cout << "7*3=" << 7*3 << endl;
}

Naravno, možemo da pišemo i komplikovanije izraze. Kao i u matematici, množenje je operacija višeg prioriteta od sabiranja i oduzimanja tako da rezultat izvršavanja operacija možemo da promenimo koristeći zagrade:

#include <iostream>

using namespace std;

int main()
{
    cout << "7+3=" << 7+3 << endl; //7+3=10 
    cout << "7-3=" << 7-3 << endl; //7-3=4
    cout << "7*3=" << 7*3 << endl; //7*3=21
    cout << "1+2*3-4=" << 1+2*3-4 << endl; //1+2*3-4=3
    cout << "(1+2)*3-4=" << (1+2)*3-4 << endl; //(1+2)*3-4=5
    cout << "(1+2)*(3-4)=" << (1+2)*(3-4) << endl; //(1+2)*(3-4)=-3
}

Deljenje

Pogledajmo šta se dešava kada probamo da podelimo dva broja:

#include <iostream>

using namespace std;

int main()
{
    cout << "7/3=" << 7/3 << endl;
    cout << "6/3=" << 6/3 << endl;
    cout << "8/3=" << 8/3 << endl;
    cout << "9/3=" << 9/3 << endl;
}

Ovde smo dobili neočekivane rezultate! Problem je što u programiranju / nije oznaka za matematičko deljenje. Kada se radi samo sa celim brojevima, znak / označava celobrojno deljenje. Celobrojno deljenje nam daje količnik bez decimalnog dela (odnosno bez ostatka). Kako je matematički 7/3 = 2.3333333333…, celobrojni deo je 2. Da bismo izračunali ostatak pri deljenju, možemo da koristimo operaciju %.

#include <iostream>

using namespace std;

int main()
{
    cout << "7%3=" << 7%3 << endl;
    cout << "6%3=" << 6%3 << endl;
    cout << "8%3=" << 8%3 << endl;
    cout << "9%3=" << 9%3 << endl;
}

Ponekad nam ne treba celobrojno deljenje već želimo da dobijemo decimalni broj kao rezultat. Da bismo to postigli, moramo da umesto celih brojeva koristimo decimalne (realne) brojeve. Kao što verovatno znaš iz škole, u našem pravopisu celobrojni deo se od decimalnog razdvaja zarezom. Na primer, pola kilograma može da se napiše kao 0,5Kg. Međutim, u programskim jezicima (kao i u engleskom jeziku) umesto decimalnog zareza se koristi decimalna tačka, pa se decimalni brojevi pišu kao na kalkulatorima - sa tačkom: 2.5, 3.333, 7.815, 9.99... Računar zato brojeve koji nemaju decimalnu tačku tretira kao cele brojeve i sa njima ne radi tačno već samo celobrojno deljenje. Brojevi koji imaju decimalnu tačku se tretiraju kao decimalni brojevi i sa njima možemo da radimo samo tačno deljenje. Kada želimo da podelimo dva cela broja, ali tačno umesto celobrojno, moramo da deljenik ili delilac da zapišemo sa decimalnom tačkom - na primer 7.0 umesto 7, 123.0 umesto 123...

#include <iostream>

using namespace std;

int main()
{ 
    cout << "7=" << 7 << endl;
    cout << "7.0=" << 7.0 << endl;
    cout << "7/3=" << 7/3 << endl;
    cout << "7.0/3.0=" << 7.0/3.0 << endl; system("pause");
}

Primer 1

Hajde da na sledećem primeru primenimo ovo što smo upravo naučili.

Pera sakuplja sličice za album sa Pokemonima. Sličice se kupuju na trafici i kesa sa 5 sličica košta 43 dinara. Album ima 230 mesta. Koliko je Peri najmanje potrebno novca da popuni album? Kako jedna kesica sadrži 5 sličica a Pera mora da kupi najmanje 230 sličica ukupno (pod uslovom da nema duplikata) mora da kupi barem 230/5 kesica sa sličicama. Ako znamo i cenu svake kesice možemo da izračunamo koliko mu je ukupno potrebno novca. Program koji nam to računa izgleda ovako:

#include <iostream>

using namespace std;

int main()
{
    cout << "Peri je potrebno najmanje " << (230/5)
         << " kesica koje može kupiti za " << (230/5) * 43
         << " dinara"<< endl;
}

Primer 2

Pored četiri osnovne matematičke operacije često se koristi i korenovanje. Za korenovanje ne postoji jedan simbol već moramo da koristimo biblioteku cmath i njenu funkciju sqrt. Funkcija je dobila ovo ime jer se na engleskom jeziku kvadrat piše square, koren je root, pa je kvadratni koren squared root.

Evo i programa koji ispisuje kvadrati koren broja 289:

#include <iostream>
#include <cmath>

using namespace std;
 
int main()
{ 
    cout << "sqrt(289) =" << sqrt(289) << endl;
}

Za vežbu probaj da promeniš program tako da ispisuje kvadrati koren broja 314195.