Sunteți pe pagina 1din 5

prof.

Mihaela Corina Ildegez

STRUCTURI REPETITIVE
Atunci când se dorește repetarea unei acțiuni de un anumit număr de ori este necesară utilizarea unei
structuri repetitive. În funcție de numărul repetărilor acestea se clasifică în:
 Structuri repetitive cu număr nedeterminat de pași
o Cu test inițial
o Cu test final
 Structuri repetitive cu număr fix de pași

Structura repetitivă cu test inițial


Numele acestei structuri repetitive provine de faptul că înaintea executării unei instrucțiuni se verifică
îndeplinirea unei expresii logice. În limbajul C++ este cunoscută sub denumirea de structura while.
Reprezentarea acestei structuri este:
Reprezentare în schemă logică Reprezentare în limbaj pseudocod

cât timp (expresie logică) execută


instrucțiune

Mod de execuție:
 Pas 1 :Se determină valoarea de adevăr a expresiei logice(C);
 Pas 2: Dacă este adevărată atunci se execută blocul de instrucțiuni(BI) și se revine la pas1
 Pas 3: Dacă expresia logică este falsă atunci se părăsește structura repetitivă.
Observații:
 Dacă la prima evaluare a expresia logică(C) este falsă, atunci instrucțiunea(BI) nu va fi executată nici
măcar o singură dată și se va părăsi structura repetitivă;
 Evaluarea expresiei logice(C)se face la fiecare reluare a structurii si este recomandat ca forma ei să
fie cât mai simplă;
 Utilizarea acestei structuri este recomandată atunci când nu se cunoaște numărul de repetări ale
buclei și atunci când expresiei logice(C) poate fi falsă încă de la intrarea în structură;
 Instrucțiunea(BI) poate conține orice fel de structură de control, deci și o altă structură repetitivă cu
test inițial(while-uri imbricate);
 Buclele infinite nu vor fi sesizate ca erori de compilare;
 Utilizatorul este obligat să fie atent în evitarea formării de bucle infinite, și să verifice că după un
anumit număr de repetări valoarea de adevăr a expresie logice(C) să devină falsă.

Instrucțiunea while este instrucțiunea C++ folosită pentru a implementa în limbaj de


programare o structură repetitivă cu număr necunoscut de pași și test inițial. Sintaxa instrucțiunii este:

while (Expresie) while (Expresie)


Instrucțiune; {
Instrucțiune1;
Instrucțiune2;
..............
}
prof. Mihaela Corina Ildegez
Mod de execuție:
1. Se evaluează Expresie
2. Dacă Expresie este nenulă
o Se execută Instrucțiune;
o Se reia pasul 1.
3. Dacă Expresie este nulă, se trece la instrucțiunea de după while.

Observații
 Instrucțiune; se execută cât timp Expresie este nenulă – condiție adevărată.
 Dacă Expresie este de început vidă, Instrucțiune; nu se execută deloc.
 Instrucțiune; poate fi orice fel de instrucțiune, dar una singură. Dacă sunt necesare mai multe
instrucțiuni, se va folosi instrucțiunea compusă.
 Este necesar ca cel puțin o variabilă care apare în Expresie să-și modifice valoarea în Instrucțiune;.
Altfel se obține o buclă infinită.

Probleme cu cifrele unui număr


Frecvent se pune problema prelucrării cifrelor unui număr și pentru realizarea acestuia se pune
problema separării și analiza individuală a fiecărei cifre dintr-un număr dat. Algoritmul propus va prelucra
cifrele numărului dat de la drepta la stânga(adică de la cifra unităților către prima cifră).
Acestă separare se realizează prin împărțiri succesie la 10, unde ultima cifră este restul împărțirii
numărului la 10, iar eliminarea ultimei cifre se face determinând câtul împărțirii numărului la 10.

Algoritm:
cin>>x;
inițializare variabile de manevră(sume, contoare cu valoarea 0, produse cu valoarea 1
prelucrare caz x=0
while(n)
{ ………………;//prelucrează ultima cifră (x%10)
x=x/10;// ”taie” ultima cifră din numărul n
}
Atenție!:
 La sfârșitul acestui algoritm valoarea lui n este 0
 Un caz particular îl reprezintă situația în care inițial valoarea lui n este 0, el trebuie prelucrat separat
înainte de instrucțiunea while
 Numărul de operații efectuate de algoritm este egal cu numărul cifrelor lui n

Numărul de cifre Suma cifrelor Suma cifrelor pare


#include <iostream> #include <iostream> #include <iostream>
using namespace std; using namespace std; using namespace std;

int main() int main() int main()


{ { {
int x,nr=0; int x,s=0; int x,s=0;
cin>>x; cin>>x; cin>>x;
if(x==0) if(x==0) if(x==0)
nr=1; s=0; s=0;
else else else
while(x) while(x) while(x)
{ { {
nr++; s=s+x%10; if(x%2==0)
x=x/10; x=x/10; s=s+x%10;
} } x=x/10;
cout << nr; cout << s; }
return 0; return 0; cout << s;
} } return 0;
}
prof. Mihaela Corina Ildegez
Produsul cifrelor impare Oglinditul unui număr Cifra minimă
#include <iostream> #include <iostream> #include <iostream>
using namespace std; using namespace std; using namespace std;

int main() int main() int main()


{ { {
int x,p=1; int x,ogl=0; int x,cif_min;
bool are_impare=false; cin>>x; cin>>x;
cin>>x; while(x) cif_min=x%10;
while(x) { while(x)
{ ogl=ogl*10+x%10; {
if(x%2) x=x/10; if(x%10<cif_min)
{ } cif_min=x%10;
p=p*(x%10); cout<<ogl; x=x/10;
are_impare=true; return 0; }
} } cout<<cif_min;
x=x/10; return 0;
} }
if(are_impare)
cout << p;
else
cout<<0;
return 0;
}

Prima cifră Eliminarea tuturor cifrelor impare Dublarea cifrelor pare


#include <iostream> #include <iostream> #include <iostream>
using namespace std; using namespace std; using namespace std;

int main() int main() int main()


{ { {
int x; int x,m=0,p=1; int x,m=0,p=1;
cin>>x; cin>>x; cin>>x;
while(x>9) while(x) while(x)
x=x/10; { if(x%2==0) {
cout<<x; { if(x%2==0)
return 0; m=m+p*(x%10); {
} p=p*10; m=m+p*(x%10);
} p=p*10;
x=x/10; }
} m=m+p*(x%10);
cout<<m; p=p*10;
return 0; x=x/10;
} }
cout<<m;
return 0;
}

Aplicații:

1. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se calculeze suma cifrelor
impare.
Exemplu: dacă x =2345 atunci suma cifrelor impare este s=5+3=8

2. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se determine câte cifre impare
conţine numărul dat.
Exemplu: numărul x =3445 are două cifre impare (3 şi 5)

3. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se calculeze produsul cifrelor
pare.
Exemplu: dacă x =6542 atunci produsul cifrelor pare este 2*4*6=48

4. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se calculeze produsul cifrelor
impare.
Exemplu: dacă x =6543 atunci produsul cifrelor impare este 3*5=15
prof. Mihaela Corina Ildegez

5. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se determine cifra maximă.
Exemplu: dacă x =6143 atunci cifra minimă este 1

6. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se verifice dacă numărul de cifre
pare este egal cu numărul de cifre impare.
Exemplu: dacă x =61432, atunci el are 3 cifre pare(2, 4, 6) şi 2 cifre impare (3, 1), de unde rezultă că
numărul de cifre pare nu este egal cu numărul de cifre impare.

7. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se verifice dacă numărul conţine
cel puţin o cifră de zero.
Exemplu: dacă x =61432, atunci el nu conţine nici o cifră egală cu zero, dar dacă valoarea iniţială a
numărului x este x =12003 atunci se va afişa numărul conţine cifre de zero.

8. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se verifice dacă cifrele numărului
sunt în ordine crescătoare de la prima cifră spre ultima.
Exemplu: dacă x = 344567 atunci el are cifrele în ordine crescătoare, iar dacă x =12432 atunci el nu are
cifrele în ordine crescătoare.
9. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se verifice dacă cifrele numărului
sunt în ordine descrescătoare de la prima cifră spre ultima.
Exemplu: dacă x = 988754 atunci el are cifrele în ordine descrescătoare, iar dacă n=55243 atunci el nu
are cifrele în ordine descrescătoare.

10. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se verifice dacă numărul este
palindrom (numărul iniţial este egal cu numărul cu cifre inversate).
Exemplu: dacă x =98789 este palindrom, iar numărul x =123 nu este palindrom, 123≠321

11. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se determine dacă toate cifrele
sale sunt egale.
Exemplu: dacă x =22222 are toate cifrele egale, iar numărul x =11121 nu are toate cifrele egale.

12. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se determine dacă numărul x
are toate cifrele egale cu o cifră c, citit de la tastatură.
Exemplu: dacă x =22222 şi c=2 atunci x are toate cifrele egale cu c, iar numărul x =22222 şi c=5 atunci
nu are toate cifrele egale cu c.

14. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se determine care este cea mai
mică bază în care poate fi scris numărul dat.
Exemplu: dacă x =22315555, atunci cifra maximă este 5 şi rezultă că cea mai mică bază în care este
scris numărul este 6. De la matematică cunoaştem că un număr scris în baza b poate să conţină cifre din
intervalul [0,b-1].

15. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se să se determine cel mai mare
număr care se poate obţine prin eliminarea unei cifre din număr(nu se va modifica poziţia cifrelor în număr).
Exemplu: dacă x =67324, prin eliminarea unei cifre din acest numa se vor obţine numerele: 6732, 6734,
6724, 6324 şi 7324, iar pe ecran se va afişa 7324.

16. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se afişeze cifra de rang k, dat de
la tastatură(rangul unei cifre este numărul său de ordine, numerotând cifrele de la dreapta la stânga începând
cu zero.
Exemplu: dacă x =67324 şi k=2 atunci pe ecran se va afişa cifra 3, ea este cifra de rang doi din numărul
x, dat iniţial.

17. Să se scrie un program care calculează „cifra de control” a unui număr întreg efectuând repetat suma
cifrelor sale, până se obţine un număr format dintr-o singură cifră.
prof. Mihaela Corina Ildegez
Exemplu: dacă x =67324 cifra lui de control este 4 (67324 are suma cifrelor 4+2+3+7+6=22, numarul
22 are suma cifrelor 2+2=4)

18. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se determine toate numerele
care se pot obţine adăugând prima cifră la sfârşitul numărului.
Exemplu: dacă x =67324 se obține următorul şir de numere: 73246, 32467, 24673, 46732, şi 67324.

20. Se citeşte de la tastatură un număr natural x de cel mult 9 cifre. Se cere să se determine dacă numărul are
aspect de „deal” sau de „vale”.
Exemplu 1: dacă x =12321 se va afișa
DEAL!, cifrele urcă până la 3, după care coboară
Exemplu 2: dacă x =32123 se va afișa:
VALE!, cifrele numărului coboară până la 1, după care urcă

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