V C++ lahko uporabljamo naslednje relacijske operatorje:
== | enakost | (x == y) – ne zamenjajte ga z “=“ !!!! |
!= | neenakost | (x != y) |
< | manjše | (x < y) |
> | večje | (x > y) |
<= | manjše ali enako | (x <= y) |
>= | večje ali enako | (x >= y) |
Relacijski izraz je sestavljen iz dveh operandov in relacijskega operatorja. Relacijski operator primerja vrednosti svojih operandov in vrne logično vrednost true ali false, odvisno od rezultata primerjave. Operanda sta lahko poljubna izraza. C++ izvajalnik števila primerja po velikosti, nize pa leksikografsko (po abecedi).
Vsi relacijski zrazi vračajo:
Pogosta napaka:
V pogoje lahko damo tudi aritmetične izraze. Če je aritmetični izraz različen od 0, vrne izvajalnik ob ovrednotenju izraza "true", drugače vrne "false".
Poglejmo naslednje zaporedje stavkov:
int a = 5;
int b = 8;
if (c = a-b)
b = 9;
Če pogledamo gornji primer, vidimo, da v pogoju nismo uporabili relacijskega operatorja, ampak prireditveni stavek, s katerim smo spremenljivki c priredili vrednost izraza a-b. V našem primeru dobi spremenljivka c vrednost -3. Izvajalnik po ovrednotenju pogoja vrne vrednost "true", saj je aritmetični izraz različen od 0. Enako vrednost pogoja bi dobili tudi v naslednjem primeru:
int a = 5;
int b = 8;
int c = a - b;
if (c)
b = 9;
Če uporabimo relacijski operator "==", namesto prireditvenega "=", dobimo vrednost false. Poglejte si primer uporabe relacijskega operatorja "==":
nt a = 5;
int b = 8;
if (c == (a - b))
b = 9;
Pogosta napaka:
Pazite, da ne boste v pogoju uporabili prireditvenega operatorja "=" namesto relacijskega operatorja "==". Če želite preveriti vrednost aritmetičnega izraza je boljše, da ta izraz izračunate v prireditvenem stavku izven pogoja in nato spremenljivko, katere vrednost ste dobili v prireditvenem izrazu, preverite v pogoju.
C++ podpira naslednje logične operatorje:
&& | vrne "true" če sta levi in desni izraz "true" |
|| | vrne "true" če sta levi ali desni izraz "true" |
! | negacija |
Vsi logični operatorji vračajo 0 za "false" in 1 za "true".
Primer logičnega izraza je:
( ( (a<=b) && (c==d) ) || !(a==d+2) )
Na seznam operatorjev smo dodali še relacijske in logične. Poglejmo si kakšna je sedaj prioriteta izvajanja operatorjev.
( ) | levo desna asociativnost |
+ - ! (tip) | - |
* / % | - |
+ - | - |
<< >> | - |
< <= > >= | - |
== != | - |
&& | - |
|| | - |
?: | - |
= | desno leva asociativnost |
Nasveta:
Korene računamo po formuli x1,2=( (-b±√(b2-4ac))/2a). Če je diskriminanta (b2-4ac) večja ali enaka 0, potem izračunajte realne ničle, drugače pa izračunajte imaginarne ničle. Izračun imaginarnih ničel poteka tako, da najprej določimo absolutno vrednost diskriminante, nato pa računamo ničle na enak način, kot pri realnih ničlah Po izračunu, izpišite ničle.
Vnesi koeficijente kvadratne enačbe (a, b, c).
Izračunaj diskriminanto.
if diskriminanta <0
Izračunaj in izpiši imaginarne ničle.
else
Izračunaj in izpiši realne ničle.
int main()
{
float a, b, c, D;
// Vnos koeficientov kvadratne enacbe
cout << "Vnesi koeficiente kvadratne enaèbe (a, b in c):";
cin >> a >> b >> c;
//izracun diskriminante
D=b*b-4*a*c;
if (D<0) // ce je diskriminanta manjsa od 0 - izpiši imaginarne ničle
{
cout << "Prva nicla je: " <<(-b/(2*a))
<< " + i "
<< (sqrt(-D)/(2*a)) << endl;
cout << "Druga nicla je: " <<(-b/(2*a))
<< " -i "
<< (sqrt(-D)/(2*a)) << endl;
}
else // izpiši realne ničle
{
cout << "Prva nicla je: "
<< ((-b +sqrt(D))/(2*a)) << endl;
cout << "Druga nicla je: "
<< ((-b -sqrt(D))/(2*a)) << endl;
}
return 0;
}