Sunteți pe pagina 1din 4

INSTRUCTIUNEA REPETITIVA CU NUMAR NECUNOSCUT DE PASI

1. Instructiunea repetitivă cu test initial- INSTRUCTIUNEA WHILE

 Sintaxa in pseudocod Sintaxa in C++

cat timp  (conditie_logica)   execută while (conditie_logica)


  instructiune instructiune;
sfarsit cat timp

Prima parte din acest format constituie antetul instrucţiunii while, iar instrucţiune este corpul ei.
La întâlnirea acestei instrucţiuni întâi se evaluează expresia din paranteze (conditie_logica).
Dacă ea are valoarea true (este diferită de 0), atunci se execută instrucţiune.
Apoi se revine la punctul în care se evaluează din nou valoarea expresiei din paranteze.
În felul acesta, corpul ciclului se execută atât timp cât expresia din antetul ei este diferită de 0.
În momentul în care expresia din paranteze (conditie_logica) are valoarea 0, se trece la
instrucţiunea următoare instrucţiunii while.
Corpul instrucţiunii while poate să nu se execute niciodată. Într-adevăr dacă expresia din
paranteze (conditie_logica) are valoarea 0 de la început, atunci se trece la instrucţiunea următoare
instrucţiunii while fără a executa niciodată corpul instrucţiunii respective.
Corpul instrucţiunii while este o singură instrucţiune care poate fi compusă deci se grupează
între acolade. În felul acesta avem posibilitatea să executăm repetat mai multe instrucţiuni grupate într-o
instrucţiune compusă. Corpul instrucţiunii while poate fi o altă instrucţiune while sau să fie o instrucţiune
compusă care să conţină instrucţiunea while. În acest caz se spune că instrucţiunile while respective
sunt imbricate.
Instrucţiunile din corpul unei instrucţiuni while pot să definească un alt mod de execuţie a
instrucţiunii while decât cel indicat mai sus. Astfel, se poate realiza terminarea execuţiei instrucţiunii
while fără a se mai ajunge la evaluarea expresiei din antetul ei. De exemplu, dacă în corpul unei
instrucţiuni while se apelează funcţia exit, atunci se va termina execuţia ciclului while, deoarece se
întrerupe chiar execuţia programului. Despre instrucţiunea while se spune că este o instrucţiune ciclică
condiţionată anterior.

Exemplul 1: Să se scrie un program care calculează şi afişează valoarea polinomului p(x)=3x2-7x-10


pentru x=1,2,….,10.
#include<iostream>
using namespace std;
int main()
{
int x;
x=1;
while(x<=10)
{
cout<<”dati valoare lui x:”;
cin>>x;
cout<<”p(„<<x<”)=”<<3*x*x-7*x-10<<endl;
x++;
}
return 0;
}
Exemplul 2: Să se scrie un program care citeşte un întreg n[0,170], calculează şi afişează pe n!.
Avem: n!=1*2*3*…..*n , pentru n >0 şi 0!=1 , prin definiţie.
#include<iostream>
using namespace std;
int main()
{
int n,i;
double f;
//n! este o valoare f.mare care nu poate fi memorată
//într-un întreg
cout<<”n=";
//validarea datelor de intrare
if(cin>>n!=1)
{ cout<<"nu s-a tastat un intreg\n";
exit(1);
}
if(n<0 || n>170)
{ cout<<"n nu apartine intervalului [0,170]\n");
exit(1);
}
f=1.0; i=2;
while(i<=n)
f*=i++;
cout<<n<<”!=”<<f;
// va tipări f fără zecimalele nesemnificative, deci ca un întreg
return 0;
}
Exemplul 3: Să se afișeze suma cifrelor unui numar

#include<iostream>
int main()
{
int x,s=0;
cout<<"x=";
cin>>x;
while (x != 0)
{
s=s+x%10;
  x=x/10;    
}
cout<<"suma cifrelor unui nr="<<s;
return 0;
 }

Observatii :

În general, instrucţiunea for poate fi scrisă cu ajutorul unei secvenţe în care se utilizează instrucţiunea
while astfel :
exp1;
while(exp2)
{
instrucţiune;
exp3;
}
.
Reciproc, orice instrucţiune while poate fi scrisă cu ajutorul unei instrucţiuni for în care exp1 şi exp3
sunt vide. Astfel, instrucţiunea
while(exp) instrucţiune;
este echivalentă cu instrucţiunea
for(; exp ;) instrucţiune;
O instrucţiune for de forma
for(; ;) instrucţiune;
este validă şi este echivalentă cu instrucţiunea :
while(1) instrucţiune;
Un astfel de ciclu se poate termina prin alte mijloace decât cel obişnuit, cum ar fi instrucţiunea de
revenire dintr-o funcţie, un salt la o etichetă etc. Din cele de mai sus rezultă echivalenţa celor două cicluri
while şi for. Se recomandă folosirea instrucţiunii for în ciclurile în care sunt prezente părţile de
iniţializare şi reiniţializare, aşa numitele cicluri cu pas.

Probleme propuse

A. Probleme cu cifrele numărului:


1. Afișați inversul numărului între n citit de la tastatură. Verificati daca numărul n este palindrom.
(de exemplu 1221 DA, 120 NU)
2. Afișați cifra maximă din n.
3. Afișați suma cifrelor pare de pe poziții impare a lui n.
4. Afișați numărul de zerouri din n.
5. Afișați suma cifrelor pare si produsul cifrelor impare a lui n.
6. Afișați nuărul n fără cifrele de 0.
7. Eliminați cifrele pare din n si apoi afisati-l.
8. Să se verifice dacă exista cifra x printre cifrele numărului n.
9. Dându-se un număr natural n şi o valoare p, să se determine cifra aflată în număr pe poziţia p,
de la dreapta spre stânga.

B. Probleme cu numere:
1. Se citesc n numere întregi, pe rând într-o variabilă x şi o valoare întreagă a. Să se determine
numărul de apariţii ale valorii a, printre numerele citite.
2. Se citeşte o succesiune de numere întregi până la introducerea lui 0. Să se calculze media
aritmetică a numerelor poziţive şi numărul numerelor negative.
3. Se citesc perechi de numere naturale până când unul dintre ele este 0. Să se determine dacă
cele două numere ale fiecărei perechi sunt prime între ele.
4. Să se verifice dacă numărul n este prim.
5. Să se afișeze toate numerele prime mai mici decât un n dat.
6. Să de afișeze descompunerea în factori primi a lui n.
7. Să se verifice dacă n are k divizori.
8. Să se afișeze cmmdc-ul și cmmmc-ul a două numere a și b citite de la tastatură.
9. Să se afișeze cmmdc-ul a n numere citite pe rând de la tastatură.
10. Să se determine toate perechile de numere gemene până la o anumită valoare n. Două numere
sunt gemene dacă ambele sunt prime şi diferenţa absolută este 2.
11. Se dă un şir de n numere întregi. Să se determine câte numere pare şi câte numere impare sunt
în şir.
12. Să se determine numărul de apariţii ale unei valori date, printre elementele unui şir dat cu n
elemente.
13. Se citeşte un şir de numere întregi până la întâlnirea valorii 0. Să se calculeze media aritmetică a
numerelor din şir.
14. Se citesc n numere naturale. Să se afişeze valoarea maximă şi cea minimă dintre numerele citite.
15. Se citesc n numere naturale. Câte dintre acestea împărţite la un număr p întreg, dau restul k, p
şi k daţi.
16. Se citesc de la tastatură n numere. Să se afişeze acele numere pentru care suma cifrelor este
divizibilă cu 5.
17. Se citesc numere naturale, până la introducerea unui număr real. Să se calculeze suma
numerelor citite, precum şi câtul şi restul împărţirii sumei numerelor la suma cifrelor sumei.
18. Se citesc numere naturale până la întâlnirea numărului 17. Să se afişeze toate tripletele de
numere citite consecutiv, în care al treilea număr este restul împărţirii primului la al doilea.
19. Se citesc numere naturale până la întâlnirea numărului 0. Să se afişeze toate tripletele de
numere citite consecutiv, în care al treilea număr este media aritmetică dintre primul şi al
doilea.
20. Se citesc numere naturale până la întâlnirea valorii 0. Să se afişeze toate perechile de numere
citite consecutiv, cu proprietatea că al doilea număr este egal cu suma cifrelor primului număr.
21. Să se afişeze toate perechile de numere citite consecutive, cu proprietatea că al doilea număr
reprezintă restul împărţirii primului număr la suma cifrelor sale. Introducerea numerelor se
încheie cu 0.
22. Se citesc numere naturale până la întâlnirea valorii 13. Să se afişeze toate perechile de numere
citite consecutiv, cu proprietatea că al doilea număr reprezintă numărul de apariţii ale cifrei 3 în
pătratul primului număr.
23. Se citesc triplete de numere reale până la introducerea lui 0. Se se determine pentru fiecare
triplet de numere dacă constituie laturile unui triunghi, iar în caz afirmativ să se precizeze tipul
acestuia.
24. Să se afişeze toate triplete de numere citite consecutiv cu proprietatea că al treilea număr este
suma dintre primul şi al doilea. Introducerea datelor se încheie la introducerea a două numere
consecutive identice.
25. Se citesc numere reale până la întâlnirea valorii 0. Să se afişeze toate tripletele de numere citite
consecutiv, cu proprietatea că ele pot reprezenta laturile unui triunghi (a) isoscel; (b)
dreptunghic.
26. Să se listeze toate numerele mai mici decât n, care au suma cifrelor divizibilă cu 5.
27. Să se determine cel mai mic număr de cinci cifre, care începe şi se termină cu aceeaşi cifră
nenulă şi pentru care restul la împărţirea cu un număr p este un număr r, p şi r fiind date.
28. Fiind dat un număr natural n şi un număr prim, să se stabilească la ce putere apare factorul prim
în descompunerea numărului dat.
29. Să se calculeze cifra de control a unui număr întreg. Cifra de control a unui număr întreg se
obţine prin efectuarea sumei cifrelor sale, apoi suma cifrelor acestei sume, etc. până când se
obţine o sumă formată dintr-o singură cifră, numită “cifră de control”.
30. Să se determine câte dintre numerele formate din n cifre, n dat, au cifra de control k, k fiind dat.

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