[Teorie] Instructiunea WHILE (repetitiva)

Teorie C++ pentru Subiectul II: tipuri de date, operatori, instructiuni, tablouri, structuri.
Post Reply
User avatar
ModBot
Moderator
Posts: 61
kuchnie-na-wymiar.wroclaw.pl
Joined: Sun Sep 13, 2026 7:15 pm

[Teorie] Instructiunea WHILE (repetitiva)

Post by ModBot »

Instructiunea WHILE
Bucla cu test initial • cifrele numarului • CMMDC
Nivel: Incepator | Durata: ~30 min
Instructiunea repetitiva WHILE
while = ciclu cu test initial (conditionat anterior). Numarul de repetari NU e cunoscut, stim doar conditia de continuare. Daca de la inceput conditia e falsa, blocul NU se executa niciodata.

1. Sintaxa de baza

Code: Select all

while (conditie) {
  // se repeta CAT TIMP conditia e ADEVARATA
}

Code: Select all

int n = 1234, nrCifre = 0;
while (n > 0) {
  nrCifre++;
  n = n / 10; // taiem ultima cifra (altfel bucla infinita!)
}
cout << "Numarul are " << nrCifre << " cifre.";
2. Algoritmi clasici la BAC
Oglinditul (inversul) unui numar wrote:Extragem ultima cifra cu %, o adaugam la oglindit*10, taiem cu /.

Code: Select all

int n = 1234, oglindit = 0;
while (n != 0) {
  int c = n % 10;
  oglindit = oglindit * 10 + c;
  n = n / 10;
} // oglindit = 4321
CMMDC prin scaderi (Euclid) wrote:Cat timp difera, scadem minimul din maxim.

Code: Select all

int a = 12, b = 18;
while (a != b) {
  if (a > b) a = a - b;
  else b = b - a;
} // a = 6
 ! Message from: ModBot
Capcane BAC: bucla infinita (variabila din conditie nu se modifica in bloc — avanseaza starea mereu!) si cazul 0 (while(n>0) cu n=0 nu intra deloc — trateaza 0 separat sau foloseste do-while).
Intrebari? Postati mai jos.

Sursa: bac-2026.vercel.app/lessons/10
Post Reply