80 likes | 213 Views
Structura Repetitiva Cu Numar Necunoscut De Repetitii. Tipuri de structuri repetitive.
E N D
Tipuri de structuri repetitive Existatreitipuri de structuri repetitive: 1) Structura cu numarcunoscut de repetitii (FOR) 2) Structura cu numarnecunoscut de repetitiisi cu test initial (WHILE) 3) Structura cu numarnecunoscut de repetitiisi cu test final (DO-WHILE)
while Sintaxa : while (expresie_logica) S; Efect Pas1: Se evalueazaexpresialogica Pas2:Daca valoareaexpresieilogiceeste 1 (adevarata) se executainstructiunea Ssi se revine la pasul 1 Pas3:daca valoareaexpresieilogiceeste zero (falsa) se continua cu instructiunea de dupapunct-virgula Observatii: • dacavaloareaexpresieilogiceestefalsa de la inceputatunciinstructiunea S nu se maiexecuta • daca WHILE trebuiesarepetemaimult de o instructiune, acestea se vorincadraintreacolade; • instructiunea WHILE se mainumeste “repetitiva cu test initial”sau“conditionata anterior”, pentru ca intaiverificavaloareaconditieisiapoiexecutasecventacetrebuierepetata 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<<"catuleste :"<<C<<endl; cout<<"restuleste : "<<A; }
Probleme • Se citeste un sir de numereintregipana la intoducerealui0 (Ex: 23, -4, 5, 12, 79, 0). • Stabilitinumarul de valoripozitive din sir • Afisativaloarea minima si maxima din sir • Catenumereimparesunt in sir? • Algoritmul lui Euclid. Determinarea cmmdc şi cmmmc a 2 numere.
Do while • Sintaxa: do { S} while (conditie) ; • Efect: Pas1: se executasecventa de instructiuni S Pas2: se evalueazaconditie Pas3: dacavaloareaconditieiesteadevarata se revine la pasul 1 Pas4: dacavaloareaconditieiestefalsa se continua cu instructiunea de dupapunctsivirgula • Observatii: • do-while se mainumesteinstructiune cu test final sauconditionata posterior • observati ca intai se executasecventa de instructiuni (macar o data) siapoi 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:oricenumar are o ultimacifra, motivpentru care intai o prelucramsieliminam , siabiaapoiverificamdacamaisuntcifre de prelucrat. Algoritmc++: main(){ unsigned intx,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. • Catecifre are N? • Care esteceamai mare cifra din numar? (valoarea maxima). Analog minima. • Sa se determine prima cifra a numarului N. • De cateoriapare o cifra data C, in numarul N? • Sa se genereze “oglinditul” numarului N. (daca N=1987 atuncioglinditulvafi 7891) • Folosindproblema de maisus, stabilitidacanumarul N estepalindrom.