Detyrë: Çfarë do të shtypet kur ekzekutohet ky kod?
#include <iostream>
using namespace std;
int main() {
int x = 2, y = 3, a = 3, b = 2, g;
bool s, t;
if ((3 * x + 2 * y) < (a + 3 * b)) s = true; else s = false;
if ((y > (2 * x)) && (x <= (2 * y))) t = true; else t = false;
g = (a > (2 * b)) ? (3 * a + b) : (a + 2 * b);
cout << "s=" << s << ", t=" << t << ", g=" << g << endl;
return 0;
}
–
s=0, t=0, g=7
Detyrë: Çfarë do të shtypet kur ekzekutohet ky kod?
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float x = 2, a = 4, b = 3, g;
if ((2 * b) > a)
if (x > (2 * b))
g = 2 * a + 5 * b - 1;
else
g = x + 3;
else
g = b + 3 * x;
cout << "\nRezultati g=" << setw(5) << g << "\n";
return 0;
}
–
Rezultati g= 5
Unaza është koncepti i përsëritjes së bllokut.
Unaza while
while (kushti) {
blloku;
}
A po vëreni ngjashmëri?
if (kushti) {
blloku;
}
if
ekzekuton bllokun 1 herë nëse vlen kushti.
while
ekzekuton bllokun derisa vlen kushti.
Shembull: Numërimi nga 1 deri 5:
int i = 1;
while (i <= 5) {
cout << i << endl;
i++;
}
Shfaqet:
1
2
3
4
5
Duhet pasur kujdes që elementet e kushtit të ndryshojnë brenda bllokut të unazës.
Nëse nuk ndryshojnë, unaza mund të ekzekutohet pafundësisht.
Pse?
Shembull:
int i = 1;
while (i <= 5) {
cout << i << endl;
// Kemi harruar ta ndryshojme i.
}
i
gjithmonë ka vlerën 1, dhe programi nuk përfundon asnjëherë.
Detyrë: Të llogaritet vlera:
\[z = \sum_{i=1}^{n}{i} + \prod_{i=1}^{n}{i}\]–
#include <iostream>
using namespace std;
int main() {
int i, n, S, P, z;
cout << "Shtypni n: ";
cin >> n;
i = 1;
S = 0;
P = 1;
while (i <= n) {
S += i;
P *= i;
i++;
}
z = S + P;
cout << "z = " << z << endl;
return 0;
}
Brenda unazës kemi dy urdhëra të cilat mund të kontrollojnë rrjedhën e ekzekutimit.
continue
- përsërite ciklin e unazës.break
- dil nga unaza.Shumë shpesh unaza ka këtë formë:
int i = 1; /* Inicializimi */
while (i < x) /* Kushti */ {
blloku; /* Blloku */
i++; /* Avansimi */
}
Për këtë arsye ekziston unaza for
:
for (inicializimi; kushti; avansimi) {
blloku;
}
Shembull: Gjetja e shumës:
int S = 0;
int i = 1; // a
while (i <= n) { // b
S += i;
i++; // c
}
int S = 0;
// <---a---> <--b--> <-c->
for (int i = 1; i <= n; i++) {
S += i;
}
Unazat e mësipërme janë ekuivalente.
Detyrë: Të shkruhet programi i cili shfaq numrat tek nga $1$ deri $n$.
–
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Shtypni n: ";
cin >> n;
for (int i = 1; i <= n; i++) {
if (i % 2 != 0) {
cout << i << endl;
}
}
return 0;
}
Unaza do while
E ngjashme me unazën while
, me dallimin që kushti vlerësohet në fund.
do {
blloku;
} while (kushti);
Blloku është i garantuar të ekzekutohet së paku një herë.
while vs. do while:
Detyrë: Të shkruhet programi dhe të tregohet dalja për $a=1,\; b=10,\; c=3$.
–
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cout << "a=";
cin >> a;
cout << "b=";
cin >> b;
cout << "c=";
cin >> c;
int s = 0;
int i = a;
do {
s = s + i;
i = i + c;
cout << "i=" << i
<< ", s=" << s
<< endl;
} while (i <= b);
return 0;
}
–
Dalja për $a=1,\; b=10,\; c=3$:
i=4, s=1
i=7, s=5
i=10, s=12
i=13, s=22
Detyrë: Të kryhen veprimet e kërkuara në vijim në lidhje me kodin e dhënë.
if (i % 3 == 0)
në kodin e dhënë?#include <iostream>
using namespace std;
int main()
{
int a = 2, b = 12;
double c = 0;
for (int i = a; i <= b; i = i + 2)
if (i % 3 == 0)
continue;
else
c = c - i;
cout << "c=";
cout.width(5);
cout.fill('x');
cout << c << endl;
return 0;
}
–
c=xx-24
–
–
while
:#include <iostream>
using namespace std;
int main()
{
int a = 2, b = 12;
double c = 0;
int i = a;
while (i <= b) {
if (i % 3 == 0) {
i = i + 2;
continue;
} else {
c = c - i;
i = i + 2;
}
}
cout << "c=";
cout.width(5);
cout.fill('x');
cout << c << endl;
return 0;
}
Unazat brenda unazave
Ndonjëherë kërkohet që brenda një cikli të unazës të ekzekutohet ndonjë unazë tjetër.
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
cout << "i=" << i << ", j=" << j << endl;
}
}
Sa rreshta shfaqen në ekran?
Detyrë: Të llogaritet shuma:
\[S = \sum_{\begin{array}{c}i=1\\i=\textit{tek},\;i\neq 5\end{array}}^{n}{(2i^2+5)}\]–
#include <iostream>
using namespace std;
int main() {
int n;
cout << "n=";
cin >> n;
int S = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 == 0 || i == 5) {
continue;
}
S += 2 * i * i + 5;
}
cout << "S=" << S << endl;
return 0;
}
Detyrë: Të shfaqet kjo figurë përmes unazave:
*
**
***
****
*****
****
***
**
*
Gjerësia maksimale e figurës të lexohet nga tastiera.
–
#include <iostream>
using namespace std;
int main() {
int n;
cout << "n=";
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
cout << "*";
}
cout << endl;
}
for (int i = n - 1; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
cout << "*";
}
cout << endl;
}
return 0;
}
Detyrë: Të shfaqen 20 numrat e parë të serisë Fibonacci.
\[1, 1, 2, 3, 5, 8, 13, 21, 34, ...\]–
#include <iostream>
using namespace std;
int main() {
int a = 0;
int b = 1;
cout << a << endl
<< b << endl;
for (int i = 0; i < 18; i++) {
int c = a + b;
a = b;
b = c;
cout << c << endl;
}
return 0;
}
Detyrë: Të llogaritet vlera $y$:
\[y = 5x - 2 \prod_{\begin{array}{c}k=2\\k=\textit{cift}\end{array}}^{n}{(k+x)} + 3 \sum_{\begin{array}{c}i=1\\i=\textit{tek}\end{array}}^{m+n}{(2i+n)}\]$m,\;n,\;x$ janë hyrje nga tastiera.
–
#include <iostream>
using namespace std;
int main() {
int m, n, x, y;
cout << "m=";
cin >> m;
cout << "n=";
cin >> n;
cout << "x=";
cin >> x;
int P = 1;
int S = 0;
for (int k = 2; k <= n; k += 2) {
P *= k + x;
}
for (int i = 1; i <= m + n; i += 2) {
S += 2 * i + n;
}
y = 5 * x - 2 * P + 3 * S;
cout << "y=" << y << endl;
return 0;
}
Detyrë: Të lexohet një numër i plotë nga tastiera. Të tregohet nëse ky numër është numër i thjeshtë.
–
#include <iostream>
using namespace std;
int main() {
int n;
cout << "n=";
cin >> n;
bool nr_thjeshte = true;
for (int i = 2; i < n; i++) {
if (n % i == 0) {
nr_thjeshte = false;
break;
}
}
if (nr_thjeshte) {
cout << "n eshte numer i thjeshte" << endl;
} else {
cout << "n nuk eshte numer i thjeshte" << endl;
}
return 0;
}
Detyrë:
–
#include <iostream>
using namespace std;
int main() {
int shuma_cift = 0;
int shuma_tek = 0;
while (true) {
int n;
cin >> n;
if (n < 0) {
break;
}
if (n % 2 == 0) {
shuma_cift += n;
} else {
shuma_tek += n;
}
}
cout << "Shuma e nr cift: " << shuma_cift << endl
<< "Shuma e nr tek: " << shuma_tek << endl;
return 0;
}
Detyrë: Të zhvillohet një lojë e thjeshtë.
Ndihmesë: Numri i rastit gjenerohet me kodin:
#include <stdlib.h>
#include <time.h>
...
srand(time(0));
int nr_sekret = rand() % 100 + 1;
–
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main() {
srand(time(0));
int nr_sekret = rand() % 100 + 1;
int provat = 0;
while (true) {
provat++;
int n;
cout << "Jepni n: ";
cin >> n;
if (n == nr_sekret) {
break;
} else if (n > nr_sekret) {
cout << "Me i vogel" << endl;
} else {
cout << "Me i madh" << endl;
}
}
cout << "E qelluat numrin me "
<< provat << " prova." << endl;
return 0;
}