for
Instrucțiunea for
este o structură repetitivă cu test inițial, cunoscută de asemenea drept o structură repetitivă cu un număr cunoscut de pași. Prin urmare, o vom folosi atunci când cunoaștem numărul de executări de aplicat unei secvențe de instrucțiuni.
Sintaxă
for(<exp1>; <exp2>; <exp3>) {
<instructiuni>
}
- Unde:
- exp1 are rol de inițializare/ declarare a indicelui necesar;
- exp2 reprezintă „condiția” pentru care se continuă executarea;
- exp3 are rolul de a modifica valoarea indicelui implicat în instrucțiuni (se numește și „pas”).
Dacă avem o singură instrucțiune în interiorul structurii, nu este obligatoriu să o încadrăm între acolade, putem să nu le mai punem în acest caz.
Efect
- se evaluează/execută
<exp1>
; - se determină valoarea de adevăr a
<exp2>
:- Dacă este nenulă (true):
- se execută instrucțiunile din
for
; - se execută
<exp3>
; - se reia pasul 2.
- se execută instrucțiunile din
- Dacă este 0 (false), se trece în program la următoarea instrucțiune.
- Dacă este nenulă (true):
Implementare
a) Enunț: Se citește un număr n
urmat de n
numere naturale. Să se afișeze câte dintre acestea au proprietatea de număr palindrom.
int n, c=0, nr;
cin>>n;
for(int i=1; i<=n; i++){
cin>>nr;
int aux=nr,og=0;
while(aux){
og=og*10+aux%10;
aux/=10;
}
if(og==nr) c++;
}
cout<<nr;
6
66 584 1 7651 383 410
3
3
645 211 10
0
Pentru realizarea citirii numerelor am folosit o strucută for
deoarece știam (după citirea lui n
) exact câte numere urmau a fi citite.
În interiorul structurii vom citi din prima un nou număr, căruia îi facem o copie memorată în aux
. Apoi, cu un while vom afla oglinditul numărului citit prin construirea variabilei og
cu cifrele în ordine inversă. Dacă oglinditul va fi egal cu ultimul număr citit, știm că este palindrom și creștem contorul.
Instrucțiunile din for
se vor executa de exact n
ori, întrucât indicele ales pornește de la 1 și la fiecare pas i se incrementează valoarea. După n
pași, condiția din for
devine falsă și se iese din structură.
b) Enunț: Se citește un număr natural nenul n
. Să se afișeze o piramidă de forma:
1
1 2
1 2 3
. . . . . .
1 2 3 ... n
int n;
cin>>n;
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++)
cout<<j<<' ';
cout<<'\n';
}
3
1
1 2
1 2 3
7
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
Din forma primită în cerință ne putem da seama că va trebui să afișăm exact n
linii, iar fiecare linie va trebui să conțină crescător numerele de la 1 la numărul liniei corespunzătoare.
Vom folosi două structuri for
; primul (cel din exterior) se va executa de n ori, iar indicele i
va marca linia la care ne aflăm. Al doilea for
(din interior) se va executa de i
ori, pentru a afișa la fiecare linie numerele de la 1 la i
. După afișarea indicelui j
vom pune și un spațiu, pentru a avea numerele separate prin spațiu, după cum arată în exemplu. Înainte să trecem la o linie nouă, punem și un rând nou pentru a afișa sub formă de piramidă.