Structura Repetitiva Cu Numar Necunoscut De Repetitii

Download Report

Transcript Structura Repetitiva Cu Numar Necunoscut De Repetitii

Tipuri de structuri repetitive
Exista trei tipuri de structuri repetitive:
1) Structura cu numar cunoscut de repetitii (FOR)
2) Structura cu numar necunoscut de repetitii si cu
test initial (WHILE)
3) Structura cu numar necunoscut de repetitii si cu test
final (DO-WHILE)
while
Sintaxa :
while (expresie_logica) S;
Efect
Pas1: Se evalueaza expresia logica
Pas2:Daca valoarea expresiei logice este 1 (adevarata) se executa
instructiunea S si se revine la pasul 1
Pas3:daca valoarea expresiei logice este zero (falsa) se continua cu
instructiunea de dupa punct-virgula
Observatii:
 daca valoarea expresiei logice este falsa de la inceput atunci instructiunea S nu se mai executa
 daca WHILE trebuie sa repete mai mult de o instructiune, acestea se vor incadra intre acolade;
 instructiunea WHILE se mai numeste “repetitiva cu test initial” sau “conditionata
anterior”, pentru ca intai verifica valoarea conditiei si apoi executa secventa ce trebuie repetata
Problema exemplu. Fie A si B doua valori naturale. Sa se simuleza impartirea cu rest a lui A la B
(prin scaderi repetate) si sa se determine catul si restul impartirii.
Exemplu
………
main()
{
int A, B, C=0; cin>>A>>B;
while(A>=B) {A=A-B; C++;};
cout<<"catul este :"<<C<<endl;
cout<<"restul este : "<<A; }
Probleme
 Se citeste un sir de numere intregi pana la intoducerea
lui 0 (Ex: 23, -4, 5, 12, 79, 0).
1. Stabiliti numarul de valori pozitive din sir
2. Afisati valoarea minima si maxima din sir
3. Cate numere impare sunt in sir?
 Algoritmul lui Euclid. Determinarea cmmdc şi
cmmmc a 2 numere.
Do while
 Sintaxa: do { S} while (conditie) ;
 Efect:
Pas1: se executa secventa de instructiuni S
Pas2: se evalueaza conditie
Pas3: daca valoarea conditiei este adevarata se revine la pasul 1
Pas4: daca valoarea conditiei este falsa se continua cu instructiunea de
dupa punct si virgula
 Observatii:
 do-while se mai numeste instructiune cu test final sau
conditionata posterior
 observati ca intai se executa secventa de instructiuni (macar o
data) si apoi se testeaza
 Diferența față de instrucțiunea while constă în faptul că testul este
plasat la sfârșitul buclei, deci instrucțiunea se execută cu siguranță
cel puțin o dată, indiferent de valoarea expresiei.
Exemplu
Exemplu: Se afişează, pe ecran, suma cifrelor unui număr
natural nenul x. Numărul x se citeşte de la tastatură.
Obs: orice numar are o ultima cifra, motiv pentru care intai o
prelucram si eliminam , si abia apoi verificam daca mai
sunt cifre de prelucrat.
Algoritm c++:
main()
{ unsigned int x,s=0;
cout<< “x=“;cin>>x;
do
{ s=s+x%10;x=x/10;
} while(x!=0) ;
cout<< “Suma cifrelor =“<<s<<endl;
}
Probleme
Fie N un numar natural.
1. Cate cifre are N?
2. Care este cea mai mare cifra din numar? (valoarea
maxima). Analog minima.
3. Sa se determine prima cifra a numarului N.
4. De cate ori apare o cifra data C, in numarul N?
5. Sa se genereze “oglinditul” numarului N. (daca
N=1987 atunci oglinditul va fi 7891)
6. Folosind problema de mai sus, stabiliti daca numarul
N este palindrom.