Се применуваат над било кои споредливи типови на податоци, а резултатот е цел број 0 (неточно) или 1 (точно).
Оператор | Значење |
---|---|
< | Помало |
<= | Помало или еднакво |
> | Поголемо |
>= | Поголемо или еднакво |
== | Еднаквост |
!= | Нееднаквост (различност) |
Се користат најчесто во комбинација со релациските оператори за формирање на сложени логички изрази, кои повторно враќаат резултат 0 или 1.
Оператор | Значење |
---|---|
&& | Логичко И (AND) |
| | | Логичко ИЛИ (OR) |
! | Негација (NOT) |
Пример.
int a = 5 && 0; // a = 0;
= 2 && 5; // a = 1;
a = 0 || 5; // a = 1;
a = !0; // a = 1;
a = !5; // a = 0; a
= (y = 10) * (z = 5);
x = y = z = 20; x
а) Префикс
Вредноста на променливата се зголемува пред да се пресмета изразот во која таа учествува.
= ++b; a
б) Постфикс
Вредноста на променливата се зголемува откако ќе се пресмета изразот.
= b++; a
+=
+= 5; // a = a + 5;
a += b * c; // a = a + b * c; a
-=
-= 3; // a = a – 3; a
*=
*= 3; // a = a * 3; a
/=
/= 3; // a = a / 3; a
%=
%= 3; // a = a % 3; a
if ( uslov ) {
;
naredbi_za_vistinit_uslov }
else {
;
naredbi_za_nevistinit_uslov }
Пример. Што ќе отпечати?
#include <iostream>
using namespace std;
int main() {
int m = 5, n = 10;
if (m > n)
++m;
++n;
<< "m = " << m << ", n = " << n;
cout return 0;
}
Решение: m = 5, n = 11
Да се напише програма која чита знак од тастатура и во зависнот од тоа дали е мала или голема буква печати 1 или 0, соодветно.
ПОМОШ: Користете логички и релациски оператори за тестирање на ASCII вредноста на знакот.
Решение:
#include <iostream>
using namespace std;
int main()
{
char ch;
int rez;
<< "Vnesete znak: ";
cout >> ch;
cin = (ch >= 'a') && (ch <= 'z');
rez << rez;
cout return 0;
}
Решение на бонусот:
= (ch >= '0') && (ch <= '9'); rez
Од тастатура се внесуваат координати на една точка од рамнина. Да се напише програма со која ќе се испечати на кој квадрант припаѓа внесената точка.
Решение 1
#include <iostream>
using namespace std;
int main () {
float x, y;
<<"Vnesi koordinati"<<endl;
cout>>x>>y;
cinif (x > 0 && y > 0)
<<"I kvadrant."<<endl;
coutif (x > 0 && y < 0)
<<"IV kvadrant."<<endl;
coutif (x < 0 && y > 0)
<<"II kvadrant."<<endl;
coutif (x < 0 && y < 0)
<<"III kvadrant."<<endl;
coutreturn 0;
}
Решение 2
#include <iostream>
using namespace std;
int main () {
float x, y;
<<"Vnesi koordinati"<<endl;
cout>>x>>y;
cinif (x > 0)
if (y > 0)
<<"I kvadrant."<<endl;
coutelse
<<"IV kvadrant."<<endl;
coutelse if (y > 0)
<<"II kvadrant."<<endl;
coutelse
<<"III kvadrant."<<endl;
coutreturn 0;
}
Дали ваквата програма ги опфаќа сите случаи?
Дали ќе испечати нешто за која било внесена точка?
Решение 3
#include <iostream>
using namsepace std;
int main () {
float x, y;
<<"Vnesi koordinati"<<endl;
cout>>x>>y;
cinif (x > 0)
if (y > 0)
<<"I kvadrant."<<endl;
coutelse if (y < 0)
<<"IV kvadrant."<endl;
coutelse
<<"Pozitivna X oska."<endl;
coutelse if (x < 0)
if (y > 0)
<<"II kvadrant."<endl;
coutelse if (y < 0)
<<"III kvadrant."<endl;
coutelse
<<"Negativna X oska."<endl;
coutelse
if (y > 0)
<<"Pozitivna Y oska."<endl;
coutelse if (y < 0)
<<"Negativna Y oska."<endl;
coutelse
<<"Koordinaten pocetok.");
coutreturn 0;
}
Да се напише програма што за внесен број на поени од испит ќе генерира соодветна оценка според следната табела:
Решение
#include <iostream>
using namespace std;
int main () {
int poeni, ocenka = 0;
<<"Vnesi poeni: "<<endl;
cout>>poeni;
cinif (poeni >= 0 && poeni <= 50) ocenka = 5;
else if (poeni > 50 && poeni <= 60) ocenka = 6;
else if (poeni > 60 && poeni <= 70) ocenka = 7;
else if (poeni > 70 && poeni <= 80) ocenka = 8;
else if (poeni > 80 && poeni <= 90) ocenka = 9;
else if (poeni > 90 && poeni <= 100) ocenka = 10;
else cout<<"Nevalidna vrednost na poeni!"<<endl;
<<"Ocenka: "<<ocenka<<endl;
coutreturn 0;
}
Решение в2
#include <iostream>
using namespace std;
int main () {
int poeni, ocena = 0;
<<"Vnesi poeni: "<<endl;
cout>>poeni;
cinif (poeni < 0 || poeni > 100)
<<"Nevalidna vrednost za poeni!"<<endl;
coutelse {
if (poeni > 90) ocena = 10;
else if (poeni > 80) ocena = 9;
else if (poeni > 70) ocena = 8;
else if (poeni > 60) ocena = 7;
else if (poeni > 50) ocena = 6;
else ocena = 5;
<<"Ocena: "<<ocena<<endl;
cout}
return 0;
}
Да се промени претходната програма, така што покрај оценките ќе се испечатат и знаците + и – во зависност од вредноста на последната цифра на поените:
последна цифра
печати
пример
81 = 9-
94 = 10
68 = 7+
За оценката 5 не треба да се додава + или –, а за оценката 10 не треба да се додава знакот +.
Решение
#include <iostream>
using namespace std;
int main () {
int poeni, ocenka = 0;
<<"Vnesi poeni: "<<endl;
cout>>poeni;
cinif (poeni < 0 || poeni > 100)
<<"Nevalidna vrednost za poeni!"<<endl;
coutelse {
if (poeni > 90) ocenka = 10;
else if (poeni > 80) ocenka = 9;
else if (poeni > 70) ocenka = 8;
else if (poeni > 60) ocenka = 7;
else if (poeni > 50) ocenka = 6;
else ocenka = 5;
char znak = ' ';
int pc = poeni % 10;
if (ocenka != 5) {
if (pc >= 1 && pc <= 3) znak = '-';
else if (ocenka != 10 && (pc >= 8 || pc == 0))
= '+';
znak }
<<"Ocena: "<<ocenka<<znak<<endl;
cout}
return 0;
}
Од тастатура се внесуваат должини на три отсечки во произволен редослед. Да се напише програма што ќе провери дали од отсечките може да се конструира триаголник, при што ако може, да се провери дали истиот е правоаголен и да се пресмета неговата плоштина. Во спротивно, треба да се испечатат соодветни пораки.
Решение
#include <iostream>
using namespace std;
int main() {
float a, b, c;
<<"Vnesi dolzini na strani: "<<endl;
cout>>a>>b>>c;
cinif ((a + b <= c) || (a + c <= b) || (b + c <= a))
<<"Ne moze da se konstruira triagolnik."<<endl;
coutelse {
if (a >= b) {
float tmp = a;
= b;
a = tmp;
b }
if (a >= c) {
float tmp = a;
= c;
a = tmp;
c }
if (b >= c) {
float tmp = b;
= c;
b = tmp;
c } // po ova najdolgata strana kje bide vo c
if (c * c == a * a + b * b) {
<<"Tragolnikot e pravoagolen."<<endl;
cout<<"Ploshtinata mu e: "<<a * b / 2;
cout} else {
<<"Tragolnikot NE e pravoagolen."<<endl;
cout}
}
return 0;
}
Од тастатура се внесуваат должини на три отсечки во произволен редослед. Да се провери дали од дадените отсечки може да се конструра триаголник. Ако може, да се испечати дали триаголникот е разностран, рамностран или рамнокрак и да му се пресмета плоштината.
Решение
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float a, b, c;
<<"Vnesi dolzini na strani: "<<endl;
cout>>a>>b>>c;
cinif ((a + b <= c) || (a + c <= b) || (b + c <= a))
<<"Ne moze da se konstruira triagolnik."<<endl;
coutelse {
if (a == b && b == c)
<<"Tragolnikot e ramnostran."<<endl; // equilateral
coutelse if (a == b || b == c || a == c)
<<"Tragolnikot e ravnokrak."<<endl; // isosceles
coutelse
<<"Tragolnikot e raznostran."<<endl; // scalene
coutfloat p, s = (a + b + c) / 2;
= sqrt(s * (s - a) * (s - b) * (s - c));
p <<"Ploshtinata mu e :"<<p;
cout}
return 0;
}
Да се напише програма за пресметување на возраста на едно куче во човечки години. Кучешката возраст се чита од стандарден влез.
Доколку се внесе негативен број за возраста, да се испечати следната порака: “Vozrasta mora da bide pozitiven broj”.
Забелешка: За првите две години, една кучешка година е еднаква на 10,5 човечки години. После тоа, секоја кучешка година е еднаква на 4 човечки години.
#include <iostream>
using namespace std;
int main() {
int kucheskaVozrast, chovecheskaVozrast;
<< "Vnesete kucheshka vozrast: ";
cout >> kucheskaVozrast;
cin
if (kucheskaVozrast < 0) {
<< "Vozrasta mora da bide pozitiven broj" << endl;
cout } else {
if (kucheskaVozrast <= 2) {
= kucheskaVozrast * 10.5;
chovecheskaVozrast } else {
= 2 * 10.5 + (kucheskaVozrast - 2) * 4;
chovecheskaVozrast }
<< "Chovecheska vozrast na kucheto e: " << chovecheskaVozrast << endl;
cout }
return 0;
}
Да се напише програма со која ќе се отпечати максимумот од два броја чии вредности се читаат од тастатура.
Решение:
#include <iostream>
using namespace std;
int main() {
int a, b;
<< "Vnesi 2 broja: " << endl;
cout >> a >> b;
cin if (a > b)
<< "Maximum: \n" << a;
cout else
<< "Maximum: \n" << b;
cout return 0;
}
Решение 2 (без if-else):
#include <iostream>
using namespace std;
int main() {
int a, b, maks;
<< "Vnesi 2 broja: " << endl;
cout >> a >> b;
cin = (a > b) ? a : b;
maks << "Maximum: " << maks;
cout return 0;
}
Да се напише програма што проверува дали дадена година што се вчитува од тастатура е престапна или не и на екран печати соодветна порака.
Примери за престапни години: 1976, 2000, 2004, 2008, 2012…
ПОМОШ: Годината е престапна ако е делива со 4 но не е делива со 100, или пак ако е делива со 400.
Решение:
#include <iostream>
using namespace std;
int main() {
int godina;
<< "Vnesi godina: \n";
cout >> godina;
cin if((godina%4==0 && godina%100!=0) || godina%400==0)
<< godina << " e prestapna.\n";
cout else
<< godina << " e prosta.\n";
cout return 0;
}