E-gradiva > Računalništvo > Programiranje > Upravljanje s programirljivimi napravami > Odločitveni stavki > Relacijski in logični operatorji

Prijava

Relacijski operatorji in operatorji enakosti

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:

 
Znotraj operatorjev <= ,>=, ==  in  !=  ne sme biti praznih mest. Če damo med znake za operator prazno mesto, je to slovnična napaka, ki jo prevajalnik sporoči.

Numerični True/False

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.

Logični operatorji

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) )

 

Prioriteta operatorjev

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:

 

Poskušajte sami rešiti naslednji primer:

 

Napišite program za izračun korenov kvadratne enačbe. Obdelajte tudi primer, ko ima enačba kompleksna korena. Kvadratbna enačba ima obliko ax2+bx+c=0. Za izračun kvadratnega korena uporabite funkcijo sqrt(x) iz knjižnice math.h. Knjižnico vključite s pomočjo #include <math.h>.
  1. Vhod:
        koeficienti a, b in c.

     

  2. Izhod:
        korena kvadratne enačbe.

     

  3. Operacije, ki jih moramo izvesti:

     

    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.

     

  4. Algoritem:

     

      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.

     

  5. Računalniški program v C++:


    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;
    }