190 likes | 423 Views
6. Unaza While dhe Do While. kushti. Unaza WHILE. Ekzekutimi i komandave a të përfshira brenda kllapave të unazës do të përsëritet derisa të plotësohet kushti i<=p. Po. komanda;. Jo. 2. Komanda WHILE. i=f; while(i<=p) { a1; a2; … aN; i=i+h; }. PARAMETRA TË UNAZËS:
E N D
kushti Unaza WHILE Ekzekutimi i komandave a të përfshira brenda kllapave të unazës do të përsëritet derisa të plotësohet kushti i<=p . Po komanda; Jo 2
Komanda WHILE i=f;while(i<=p){ a1; a2; … aN; i=i+h; } PARAMETRA TË UNAZËS: i - variabla e unazës. f - vlera fillestare e variablës së unazës. p - vlera përfundimtare e variablës së unazës. h - hapi me të cilin ndryshohen vlerat e variablës i. a - komandat e përfshira brenda unazës. 3
Programi për llogaritjen e vlerës së faktorielit F=(n+1)! duke erealizuar unazën përmes komandës while. #include <iostream> using namespace std; int main() { double F=1; int i,n; cout << "\nVlera e variablës n: "; cin >> n; i=1; while (i<=n+1) { F=F*i; i=i+1; } cout << "\nVlera e faktorielit F="<< F<< "\n\n"; return 0; }
komanda; Po Jo komanda1; . . . kushti kushti komandaN; Po Jo Unaza DO-WHILE do komanda while(kushti); do{ komanda1; komanda2; … komandaN;}while(kushti); do komanda while(kushti); Komandat e ciklit ekzekutohen derisa është i plotësuar kushti. Së paku një cikël ekzekutohet meqë kushti llogaritet në fund të ciklit.
i=fillim; blloku i<=fund i=i+hapi; Po Jo Komanda DO-WHILE i=fillim;do{ komanda1; komanda2; … komandaN; i=i+hapi; } while(i<=fund); PARAMETRA TË UNAZËS: i – variabla e unazës. fillim – vlera fillestare variablës i. fund –vlera përfundimtare e variablës i. hapi –hapi me të cilinndryshohet variabla i. blloku – komandat të përfshira brenda unazës.
Shembull 1. Të llogaritet shuma e numrave natyrorë mes 1 dhe nme komandën do-while. int main() { int i,n,S; cout << "n: "; cin >> n; S=0; i=1; do { S+=i; i++; } while(i<=n); cout << "S=" << S << endl; return 0; } Shembuj daljesh Dalje 1n: 5S=15 Dalje 2 n: 50S=1275
Shembull 2. Të llogaritet F=(n+1)! me komandën do-while. (fq.236) int main() { int i,n,F; cout << "n: "; cin >> n; F=i=1; do { F*=i; i++; } while(i<=n+1); cout << "F=" << F << endl; return 0; }
Shembull 3. Të llogaritet shuma katrorëve të numrave tek dhe kubeve të numrave çift mes numrave natyrorë 1 dhe n. Shembuj daljesh Dalje 1n: 3S=18 #include <iostream> using namespace std; int main() { int i,n; double S; cout << "n: "; cin >> n; S=0; i=1; do { if(i%2!=0) S=S+(i*i); else S=S+(i*i*i); i++; } while(i<=n); cout << "S=" << S << endl; return 0; } Dalje 2 n: 4S=82 Dalje 3 n: 6S=323
Kapërcimi i komandave brenda unazës Do-While Shembull 1. Të llogaritet vlera e funksionit (fq.248) x, n – variabla hyrëse int main() { int i,n,S; double x,y; cout << "x n: "; cin >> x >> n; cout << " i S \n"; S=0; i=1; do { if(i!=3 && i!=6){ S+=2*i+1; cout << setw(5) << i << setw(5) << S << endl; } i++; } while(i<=n+1); y=x/3+4*S; cout << "\n y=" << y << endl; return 0; }
Dalje nga unaza Do-While me komandën Break Shembull 2. Të llogaritet n! për numrat mes 1 dhe n. Llogaritja të ndërpritet nëse faktorieli e tejkalon vlerën maksimale të tipi int. (fq.268) int main() { int i,n; double F; cout << "n: "; cin >> n; cout << " Numri Faktorieli \n"; F=i=1; do { if(F*i>INT_MAX){ cout << "F>INT_MAX \n"; break; } F*=i; cout << setw(5) << i << fixed << setprecision(1) << setw(18) << F << endl; i++; } while(i<=n); return 0; }
Shembulli 3. Të llogaritet sa numra çift dhe sa numra tek lexohen nga tastiera. Leximi i numrave përfundon kur të lexohet numër negativ ose zero. int main( ) { int numri,i=1,tek=0,cift=0; do { cout << "n" << i << ": "; cin >> numri; if (numri<=0) break; if(numri%2==0) cift++; else tek++; i++; } while(true); cout << "cift=" << cift << " tek="<< tek << endl; return 0; }
Kolokviumi i parë 1. Shkruani program për llogaritje të variablës z sipas numrave të plotë x dhe y që lexohen nga tastiera. Vlerat për x, y dhe z të shtypen ne rresht të njëjtë. z = min(x2,y2), për y < 0 z = max(x,y), për y ≥ 0 int main() { int x,y,z; cout << "x y: "; cin >> x >> y; if(y<0){ if(x*x<y*y) z=x*x; else z=y*y; } else { if(x>y) z=x; else z=y; } cout << "z=" << z << endl; return 0; }
II I III IV 2. Tëcaktohet cilit kvadrant të sistemit koordinativ kartezian i takon pika A(x,y). Pika A nuk mund tu takojë boshteve të apshisës dhe ordinatës. intmain() { int x,y; cout << "x y: "; cin >> x >> y; if(x==0 || y==0) cout << "Gabim! x!=0 dhe y!=0 \n"; else if(x>0) { if(y>0) cout << "Kvadranti 1\n"; else cout << "Kvadranti 4\n"; } else { // x<0 if(y>0) cout << "Kvadranti 2\n"; else cout << "Kvadranti 3\n"; } return 0; }
3.Shkruani program që në bazë të shenjës së lexuar (+, -, *, /) do ta ekzekutojë operacionin adekuat aritmetik me numrat realë a dhe b, që lexohen nga tastiera. Numrat a dhe b mund të kanë edhe vlerë 0. int main() { float a,b; char c; cout << "a b: "; cin >> a >> b; cout << "Operatori:"; cin >> c; switch(c) { case '+': cout << a << "+" << b << "=" << a+b << endl; break; case '-': cout << a << "-" << b << "=" << a-b << endl; break; case '*': cout << a << "*" << b << "=" << a*b << endl; break; case '/': if(b!=0){cout << a << "/" << b << "=" << a/b << endl;} else cout << "Pjestim me zero!" << endl; } return 0; }
4. Me komandën for të llogaritet shuma e numrave dyshifror natyrorë që janë të pjestueshëm me 10. Numrat natyrorë që u takojnë intervaleve [30,40] dhe [70,80] nuk i shtohen shumës. int main() { int i,S=0; for(i=10; i<=99; i++){ if((i>=30 && i<=40)||(i>=70 && i<=80)) continue; S+=i; } cout << "S=" << S << endl; return 0; }
5.Shkruani program që nga numrat natyror treshifror që lexohen nga tastiera do ta shtyp numrin maksimal. Leximi i numrave përfundon kur të lexohet numri 0. int main() { int i,n,max; i=max=1; while(true){ cout << "n" << i << ": "; cin >> n; if (n==0) break; if(n>max) max=n; i++; } cout << "max=" << max << endl; return 0; }
6.Shkruani program që do t’i shtyp të gjithë numrat treshifror ABC për të cilët vlen: abc = (ab)2 - c2 p.sh. 147=142-72=196-49=147 int main() { int numri,a,b,c,x; for(numri=100; numri<=999; numri++){ a=numri/100; b=(numri/10)%10; c=numri%10; x=a*10+b; if(x*x-c*c==numri) cout << numri << endl; } return 0; }