Sunteți pe pagina 1din 2

Instruciunea DO WHILE

Exista trei instruciuni (structuri) repetitive folosite n toate limbajele: instruciunea repetitiv cu test iniial CAT TIMP (WHILE) (se folosete cnd numrul de repetiii este nedefinit) instruciunea repetitiv cu test final REPETA-PANA CAND (DO WHILE sau REPEAT) (se folosete cnd numrul de repetiii este nedefinit) instruciunea repetitiv cu un numr cunoscut de pai PENTRU (FOR) (se folosete cnd numrul de repetiii este cunoscut - un numr fix de ori.)

Instruciunea DO WHILE
Sintaxa: do { instruciuni} while (condiie) ; Efect: 1. se executa secvena de instruciuni 2. se evalueaz condiia 3. dac valoarea condiiei este adevrata se revine la pasul 1 4. dac valoarea condiiei este falsa se continua cu instruciunea de dup punct si virgula Observaii: do-while se mai numete instruciune cu test final sau condiionata posterior observai c nti se execut secvena de instruciuni (mcar o data) i apoi se testeaz succesiunea de operaii este instruciune, test, instruciune, test, , test, instruciune, test. Exemplu: O problem la care putem folosi DO-WHILE este prelucrarea cifrelor unui numr natural/ntreg. Cifrele vor fi prelucrate pe rnd, de la sfritul numrului ctre nceput, de fiecare dat tind ultima cifra (deja prelucrata). Algoritmul se reia pn cnd nu mai sunt cifre n numr, adic valoarea N ajunge la valoarea zero. Sesizai c orice numr are o ultima cifra, motiv pentru care nti prelucrez i tai, i apoi verific dac mai sunt cifre de prelucrat. Scheletul algoritmului ar fi:
cin>>n; do { //prelucrarea ultimei cifre ..............; // tai ultima cifra n=n/10; } while (n!=0);

Observaii: Putei determina nti ultima cifra (int uc=n%10; ) i apoi s prelucrai variabila uc Probleme. Fie N un numr natural. 1. Cte cifre are N? 2. Care este suma cifrelor lui N?

3. Care este cea mai mare cifr din numr? (valoarea maxim). Analog minim. 4. S se determine prima cifr a numrului N. 5. De cate ori apare o cifr dat C, n numrul N? 6. S se genereze oglinditul numrului N. (dac N=1987 atunci oglinditul va fi 7891) 7. Folosind problema de mai sus, stabilii dac numrul N este palindrom. Rezolvri.
Problema 1 #include<iostream.h> main() {int n,a, c=0; cout<<"Inserati numarul: "; cin>>n; a=n ; do{n=n/10; c++; }while(n!=0); cout<<a<<" are "<<c<<" cifre"; }

Problema 2 #include<iostream.h> main() {int n,a,s=0; cout<<"Inserati numarul: "; cin>>n; a=n; {do{s=s+n%10; n=n/10; }while(n!=0); cout<<"Numarul "<<a<<" are suma cifrelor: "<<s; }} Problema 3