Pe scurt
O sumă sau un produs se construiește prin acumulare. Pentru numerele de la 1 la 4, suma este , iar produsul . Suma pornește de la 0, produsul de la 1. Dacă se cer doar valorile pare, testăm fiecare număr înainte de acumulare: se aleg 2 și 4, iar suma este 6, produsul 8.
În detaliu
Sumele și produsele se calculează prin acumulare: o variabilă păstrează rezultatul parțial, iar ciclul o actualizează cu fiecare termen. Suma pornește de la elementul neutru al adunării, 0, iar produsul de la elementul neutru al înmulțirii, 1. Dacă acumulatorul de produs ar porni de la 0, toate produsele ar rămâne 0. O sumă sau un produs condiționat acumulează numai termenii care îndeplinesc o condiție, iar un contor separat arată câți termeni au fost aleși: fără el nu se poate deosebi „suma este 0” de „nu s-a ales niciun termen”.
Exemplul 1 — numerele pare dintre 1 și 4. Inițial suma=0, produs=1, alese=0. Pentru testul i % 2 == 0 este fals. Pentru perechea (sumă, produs) devine . Pentru nu se modifică nimic. Pentru devine , iar contorul este 2.
#include <iostream>
using namespace std;
int main() {
int suma = 0, produs = 1, alese = 0;
for (int i = 1; i <= 4; ++i)
if (i % 2 == 0) {
suma += i;
produs *= i;
++alese;
}
if (alese == 0)
cout << "nu exista";
else
cout << suma << ' ' << produs;
return 0;
}
Programul afișează 6 8. Dacă intervalul ar fi fost de la 5 la 5, niciun termen nu s-ar fi ales, alese ar fi rămas 0 și programul ar fi afișat nu exista.
Exemplul 2 — termen general dat (Python). Suma și produsul (factorialul ) se calculează în același ciclu, cu termenul general scris ca expresie de . Pentru termenii sumei sunt 2, 5, 10, 17, 26, iar suma lor este 60; produsul este .
n = 5
S = 0
P = 1
for k in range(1, n + 1):
S += k * k + 1
P *= k
print(S, P)
Programul afișează 60 120. Funcția range(1, n + 1) include și valoarea , pe când range(1, n) s-ar opri la și ar da 34 24.
Contorul servește și la medii. Media aritmetică a numerelor pare dintre 1 și 4 este . Dacă suma și alese sunt întregi, împărțirea suma / alese este întreagă și pierde partea zecimală: pentru suma 7 și 2 termeni se obține 3, nu 3,5, așa că unul dintre operanzi se convertește la double. Formulele cunoscute oferă o verificare rapidă: suma primelor numere impare este , deci pentru ciclul trebuie să dea 25.
Exemplul 3 — suma și produsul cifrelor unui număr. Cifrele se obțin pe rând cu n % 10, iar n /= 10 le elimină. Produsul cifrelor nenule se calculează ocolind cifra 0, pentru că o singură cifră 0 ar anula tot produsul.
int n = 4052, s = 0, p = 1;
while (n > 0) {
int c = n % 10;
s += c;
if (c != 0) p *= c;
n /= 10;
}
cout << s << ' ' << p;
Cifrele extrase sunt 2, 5, 0, 4. Perechea (sumă, produs) devine succesiv , , și , deci se afișează 11 40. Pentru ciclul nu se execută, iar rezultatul rămâne 0 1: suma este corectă, dar produsul 1 nu reprezintă cifrele lui 0, caz care se tratează separat dacă enunțul îl cere. Dacă p ar porni de la 0, produsul ar rămâne 0 pentru orice număr.
Depășirea și restul. Produsul crește repede: nu mai încape în int. Dacă problema cere produsul modulo , se aplică restul după fiecare înmulțire, , ca valorile să rămână mici. Pentru long long cea mai mare factorială care încape este .
Pentru admitere
La un calcul condiționat, urmărește atât acumulatorul, cât și numărul de termeni selectați. Pentru termenii 3 și 5 și condiția „par”, contorul rămâne 0 și suma 0; dacă enunțul cere un mesaj, afișezi „nu există”. La un produs modulo , actualizarea este ; pentru , și noul produs este 3. Verifică și limitele ciclului: i <= n include , pe când i < n îl omite. Condiția poate fi o negație (i % 3 != 0) sau o combinație (i % 2 == 0 && i > 2); de aceea, înainte de a calcula, scrie lista valorilor alese. Dacă produsul este afișat pe tipul int, estimează dacă încape: produsul primelor 13 numere naturale nenule nu mai încape în int.
Exemplu în formatul examenului. Ce se afișează în urma executării secvenței de mai jos?
int s = 0, p = 1;
for (int i = 1; i <= 6; i++)
if (i % 3 != 0) {
s += i;
p *= i;
}
cout << s << ' ' << p;
- a)
21 720 - b)
12 40 - c)
12 80 - d)
9 18
Răspunsul corect este b). Ciclul alege valorile 1, 2, 4 și 5 (3 și 6 sunt multipli de 3). Suma lor este , iar produsul . Varianta a) adună toate valorile de la 1 la 6, varianta d) adună numai multiplii de 3, adică , iar produsul lor este 18.
Al doilea exemplu în formatul examenului. Ce se afișează în urma executării secvenței de mai jos?
int s = 0, c = 0;
for (int i = 1; i <= 8; i++)
if (i % 3 == 0 || i % 4 == 0) {
s += i;
c++;
}
cout << s / c;
- a)
5 - b)
5.25 - c)
4 - d)
21
Răspunsul corect este a). Valorile alese sunt 3, 4, 6 și 8, deci și . Ambii operanzi sunt întregi, așa că împărțirea 21 / 4 este întreagă și dă 5, nu 5,25. Varianta c) afișează numărul termenilor, iar varianta d) afișează suma.
Greșeli frecvente
- Greșit: produsul pornește de la 0.Corect: pornește de la 1.
- Greșit: suma valorilor pare dintre 1 și 4 este 2, fiindcă sunt două valori.Corect: suma este 6.
- Greșit: la condiția
i <= 4valoarea 4 nu este procesată.Corect: este inclusă.
Testează-te pe această lecție
Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.
Înainte și după
Surse și referințe
Redactare proprie, conform programei:
- UNSTPB, Regulament admitere licență 2026, Anexa II-1.2 p. Anx II-14 și Anexa XI-3 p. Anx XI-6–7 (PDF p. 64, 120–121); admitere.pub.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 3 și 6; aplicabilitatea 2027: OMEC 5211/2026, art. 3 alin. (10); edu.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 3–4; edu.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 5–6; edu.ro
Documente consultate
- UNSTPB, admitere 2026, anexa XI-3, p. Anx XI-6–7
- Programa școlară de informatică, clasa a IX-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
- Programa școlară de informatică, clasa a IX-a, matematică-informatică (OMEC 6930/2025, anexa 42), p. 1653–1654; rocnee.eu
- Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației, p. 3 și 6; edu.ro
- Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro
Desene: Redactare proprie (desen original), conform Programa școlară de informatică, clasa a IX-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
