for

Schema logica instructiunea 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

  1. se evaluează/execută <exp1>;
  2. 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.
    • Dacă este 0 (false), se trece în program la următoarea instrucțiune.

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ă.