–
Operatori ternar (?
)
Shpesh kemi kushtëzimin me dy degëzime si në vijim:
if (kushti) {
y = shprehja1;
} else {
y = shprehja2;
}
Këtë mund ta thjeshtojmë në:
y = kushti ? shprehja1 : shprehja2;
Urdhëri:
y = kushti ? shprehja1 : shprehja2
interpretohet kështu:
\[y = \begin{cases} shprehja1 & \text{nëse}\; \textit{kushti} \\ shprehja2 & \text{nëse jo} \end{cases}\]Nga definicioni i vlerës absolute:
\[|x| = \begin{cases} x & \text{kur}\; x \geq 0 \\ -x & \text{kur}\; x < 0 \end{cases}\]Në kod shkruhet kështu:
vlera_absolute = (x >= 0 ? x : -x);
(a > b ? a : b)
është shprehje.
Pse?
(a ? b : c)
është shprehje e cila mund të përdoret kudo që kemi RValue.
Jep vlerën ose b
ose c
, varësisht a vlen kushti a
.
cout << (piket >= 50 ? "Keni kaluar" : "Nuk keni kaluar");
vlera_absolute = (x >= 0 ? x : -x);
Shembull: Gjetja e vlerës maksimale.
int a, b, max;
cin >> a;
cin >> b;
max = a > b ? a : b;
cout << "Maksimumi është: " << max;
Detyrë: Të lexohen dy numra nga tastiera. Të shfaqet numri më i madh nga këta dy.
Bonus: Të gjendet maksimumi i 3 numrave.
–
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "Jepni numrin e pare: ";
cin >> a;
cout << "Jepni numrin e dyte: ";
cin >> b;
cout << "Maksimumi eshte: "
<< (a > b ? a : b)
<< endl;
return 0;
}
Detyrë: Të lexohet një numër i plotë nga tastiera, dhe të tregohet nëse ai numër është çift apo tek.
Shtypni numrin: 7
Keni shtypur numer tek.
Bonus: Të lexohen 5 numra të plotë dhe të gjendet shuma e numrave tek dhe çift.
–
#include <iostream>
using namespace std;
int main() {
int numri;
cout << "Shtypni numrin: ";
cin >> numri;
cout << "Keni shtypur numer "
<< (numri % 2 == 0 ? "cift" : "tek")
<< "." << endl;
return 0;
}
Detyrë: Të lexohet nga tastiera një numër i plotë $x$. Të llogaritet dhe të shfaqet vlera $y$ sipas funksionit:
\[y = \begin{cases} -4x + 3 & \text{kur}\; x \leq 3 \\ x - 5 & \text{kur}\; x > 3 \end{cases}\]–
#include <iostream>
using namespace std;
int main() {
int x, y;
cout << "Shtypni x: ";
cin >> x;
y = x <= 3 ? -4 * x + 3 : x - 5;
cout << "y = " << y << endl;
return 0;
}
E krahason një shprehje me një listë të vlerave.
switch (vlera) {
case 1:
blloku1;
break;
case 2:
blloku2;
break;
default:
blloku3;
break;
}
vlera == 1
ekzekutohet blloku1
.vlera == 2
ekzekutohet blloku2
.blloku3
.Kodet në vazhdim janë ekuivalente:
switch (vlera) {
case 1:
blloku1;
break;
case 2:
blloku2;
break;
default:
blloku3;
break;
}
if (vlera == 1) {
blloku1;
} else if (vlera == 2) {
blloku2;
} else {
blloku3;
}
Shembull:
switch (nota) {
case 5:
cout << "Shkelqyeshem.";
break;
case 4:
cout << "Shume mire.";
break;
case 3:
cout << "Mire.";
break;
case 2:
cout << "Mjaftueshem.";
break;
case 1:
cout << "Dobet.";
break;
default:
cout << "Nuk ka kuptim.";
break;
}
Rastet mund të bashkohen:
switch (dita) {
case 1:
case 2:
case 3:
case 4:
case 5:
cout << "Dite pune";
break;
case 6:
case 7:
cout << "Dite pushimi";
break;
}
Detyrë: Të lexohen dy numra dhe një karakter. Varësisht nga karakteri, të llogaritet:
Karakteri | Shprehja |
---|---|
+ |
a + b |
- |
a - b |
* |
a * b |
/ |
a / b |
% |
a % b |
–
#include <iostream>
using namespace std;
int main() {
int a, b, c;
char v;
cout << "Jepni a: ";
cin >> a;
cout << "Jepni veprimin: ";
cin >> v;
cout << "Jepni b: ";
cin >> b;
switch (v) {
case '+':
c = a + b;
break;
case '-':
c = a - b;
break;
case '*':
c = a * b;
break;
case '/':
c = a / b;
break;
case '%':
c = a % b;
break;
default:
cout << "Karakter jo-valid.";
return 1; // Mbyllim programin me gabim.
}
cout << "Rezultati: " << c << endl;
return 0;
}
Detyrë: Të lexohet një numër i plotë. Të shfaqet muaji i vitit që ka atë numër.
Jepni numrin e muajit: 3
Numri 3 i korrespondon muajit mars.
–
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
string muaji;
cout << "Jepni numrin e muajit: ";
cin >> n;
switch (n) {
case 1:
muaji = "janar";
break;
case 2:
muaji = "shkurt";
break;
case 3:
muaji = "mars";
break;
case 4:
muaji = "prill";
break;
case 5:
muaji = "maj";
break;
case 6:
muaji = "qershor";
break;
case 7:
muaji = "korrik";
break;
case 8:
muaji = "gusht";
break;
case 9:
muaji = "shtator";
break;
case 10:
muaji = "tetor";
break;
case 11:
muaji = "nentor";
break;
case 12:
muaji = "dhjetor";
break;
default:
cout << "Keni shtypur numer jo-valid.";
return 1;
}
cout << "Numri " << n
<< " i korrespondon muajit " << muaji
<< "." << endl;
return 0;
}
Bën kërcim të pa-kushtëzuar të ekzekutimit.
Na mundëson përsëritjen e kodit - unazat.
Labela: Vendos pozitë ku mund të kërcejmë.
int i = 0, S = 0, n;
cin >> n;
mbledhja:
S = S + i;
i = i + 1;
if (i <= n) {
goto mbledhja;
}
cout << "Shuma S=" << S << endl;
Detyrë: Të llogaritet vlera:
\[S = \sum_{i=1}^{n}{i}\]–
#include <iostream>
using namespace std;
int main() {
int i, S, n;
cout << "Shtyp n: ";
cin >> n;
i = 1;
S = 0;
mbledhja:
S += i;
i++;
if (i <= n) {
goto mbledhja;
}
cout << "S = " << S << endl;
return 0;
}
Detyrë: Të llogaritet vlera:
\[P = n! = \prod_{i=1}^{n}{i}\]–
#include <iostream>
using namespace std;
int main() {
int i, P, n;
cout << "Shtyp n: ";
cin >> n;
i = 1;
P = 1;
shumezimi:
P *= i;
i++;
if (i <= n) {
goto shumezimi;
}
cout << "P = " << P << endl;
return 0;
}
Detyrë:
cin.eof() == true
të mbyllet programi.Bonus: Të shfaqet nota varësisht nga pikët.
–
#include <iostream>
using namespace std;
int main() {
int p;
lexo:
cin >> p;
if (!cin.eof() && p > 0) {
cout << (p >= 50 ? "Kalon provimin." : "Nuk kalon provimin.")
<< endl;
goto lexo;
}
return 0;
}