Sunteți pe pagina 1din 10

Structuri repetitive

(for,while,do ..while)

Acestea se împart în 2 categorii:

-cu test inițial : for,while

-cu test final: do... while

Important:- do.. while ,while se folosesc ,în mare parte , când nu știm cu exactitate numărul de repetiții

1.For
-Sintaxa: for(inițializare; condiție; pas)
{ .... }
-inițializare: constă în atribuirea unui contor, de obicei i ,cu o anumită valoare(i=0)
-condiție: se verifică înaintea fiecărei intrări în buclă, în caz ca nu este îndeplinită se
iese din instrucțiunea for
-pas: reprezintă pasul de incrementare, într-un cuvânt cu cât se incrementează o
variabilă la sfârșitul buclei
Util: -declararea variabilei i se poate face și în for

-nu este obligatoriu ca variabilia din inițializare și condiție sa fie aceeași ca cea din pasul de

incrementare

-în pasul de incrementare ,nu este obligatoriu sa avem i++//i—putem avea si i=a*b, unde a și b sunt

alte 2 variabile

Exemplu: for(int i=0;a<=3;a=a*10)

-un for se poate scrie și fără una, două sau trei elemente din definiție

Exemplu:

-for(i=0;i<b;) -for(;i<b;) - for(;;) = buclă infinită


Exemple de probleme rezolvate cu instrucțiunea for
1.Se dă intervalul (a,b) ,să se afișeze toate numerele naturale din interval.

int main()

{ int a,b;

cin>>a>>b;

for(int i=a+1;i<b;i++)

{cout <<i<<' ';}

return 0;

2.Afișati al n-lea termen al șirului:

1,1,2,1,2,3,1,2,3,4,......

-exemplu pentru n=8 ,se afișează 2


int main()

int a=0,n,r=1;

cin>>n;

for(int i=1;i<=n;i++)

if(a==r)

a=0;

r++;

a++;

cout<<a;

return 0;

}
Explicare pas cu pas problema anterioară

De studiat:

1.Afișați primi n termini ai șirului:

1,2,4,7,11,16,22,29

2.Afișati câte numere prime avem în intervalul [a,b].

3.Afișați divizorii proprii (toți divizorii în afară de 1 și el însuși) ai numarului x.


2.While
-Sintaxa: while(condiție)
{ instrucțiuni }
->Pe scurt, atât timp cât condiția este îndeplinită se execută instrucțiunile din bucla
while, condiția este testată înainte de intrarea în buclă

Important:

-Algoritm de prelucrare a cifrelor dintr-un numar

cin>>numar;

while(numar!=0)

{c=numar%10;

numar=numar/10;

Exemple de probleme rezolvate cu instrucțiunea while


1Să se afle dacă numărul x este palindrom(palindrom=numărul este la fel atât citit de la dreapta
la stanga, cât și citit de la stânga la dreapta).
int main()

int aux,n,inv=0,c;

cin>>n;

aux=n;

while(n!=0)

{c=n%10;

n=n/10;

inv=inv*10+c;}

cout<<inv;

if(inv==aux) cout<<" este palindrom";

else cout<<" nu este palindrom";

return 0;}
Explicare pas cu pas problema anterioară
De studiat:

1.Sa se citească numere de la tastatură până la apariția unuia negativ și să se afișeze maximul
citit
2.Aplicând prelucrarea cifrelor , afișați de câte ori apare cifra 4 într-un număr.
3.Să se afle cel mai mic multiplu comun a 2 numere, apoi a n numere.

2.Do...while
-Sintaxa: do
{ instrucțiuni }while(condiție)

->Pe scurt, atât timp cât condiția este îndeplinită se execută instrucțiunile din bucla
do ..while, condiția este testată după ieșirea din buclă
Reguli de trecere dintr-o structură repetitivă în alta
Exemplu de trecere dintr-o repetitivă în alta

->Se dă exercițiul cu palindrom de mai sus, să se modifice while-ul cu for.

Cod:
int main()

{int aux,n,inv=0,c;

cin>>n;

for(int i=n;i!=0;i=i/10)

{c=i%10;

inv=inv*10+c;}

cout<<inv;

if(inv==n) cout<<" este palindrom";

else cout<<" nu este palindrom";

return 0;}

S-ar putea să vă placă și