Didaxis
lecție · Informatică

Lista de frecvențe

Numărarea aparițiilor valorilor dintr-un domeniu finit.

Se face în:
Clasa a IX-a
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

Pe scurt

O listă de frecvențe arată de câte ori apare fiecare valoare dintr-un domeniu cunoscut. Pentru șirul , valoarea 1 apare o dată, iar valoarea 4 de două ori. Metoda folosește un tablou de contoare indexat prin valoare; este practică dacă valorile posibile sunt întregi într-un interval mic.

Desen la lecția „Lista de frecvențe”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

În detaliu

Când valorile unui șir sunt numere întregi dintr-un interval mic și cunoscut, se poate folosi un tablou de frecvențe: fr[x] păstrează de câte ori apare valoarea x. Pentru valori de la 0 la se declară contoare inițializate cu 0, iar fiecare valoare citită mărește cu 1 contorul de la poziția ei. Construirea cere pași pentru cele valori, deci timp proporțional cu , iar memoria este proporțională cu . Suma frecvențelor este , ceea ce oferă o verificare simplă. Pentru valori dintr-un interval care nu începe de la 0, indicele se calculează x - L. Valorile trebuie să fie în interval: o valoare prea mare produce IndexError în Python (sau acces în afara tabloului în C++), iar un indice negativ în Python numără de la sfârșitul listei și mărește fără avertisment contorul altei valori.

Exemplul 1 — frecvențele valorilor 1, 2 și 3. Pentru valori între 0 și 3 se pregătesc patru contoare:

v = [2, 1, 2, 3, 2]
frecventa = [0] * 4
for x in v:
    frecventa[x] += 1
print(frecventa[1], frecventa[2], frecventa[3])

După valoarea 2 vectorul contoarelor este [0,0,1,0]; după 1 devine [0,1,1,0]; după al doilea 2, [0,1,2,0]; după 3, [0,1,2,1]; după ultimul 2, [0,1,3,1]. Programul afișează 1 3 1. Suma frecvențelor este 5, egală cu numărul de elemente din v.

Exemplul 2 — valoarea cea mai frecventă. După construirea tabloului se caută maximul frecvențelor. Pentru șirul frecvențele sunt: 1 apare de 2 ori, 2 de 3 ori, 3 de 3 ori. Frecvența maximă este 3, iar valorile 2 și 3 au această frecvență. Dacă enunțul cere cea mai mică valoare cu frecvență maximă, parcurgi contoarele în ordinea valorilor și actualizezi maximul numai când găsești o frecvență strict mai mare: răspunsul este 2.

#include <iostream>
using namespace std;
int main() {
    int v[] = {3, 1, 3, 2, 1, 3, 2, 2}, n = 8;
    int fr[4] = {0};
    for (int i = 0; i < n; ++i)
        ++fr[v[i]];
    int valoare = 0;
    for (int x = 1; x <= 3; ++x)
        if (fr[x] > fr[valoare])
            valoare = x;
    cout << valoare << ' ' << fr[valoare];
    return 0;
}

Programul afișează 2 3. Condiția fr[x] > fr[valoare] este strictă, deci valoarea 3, cu aceeași frecvență ca 2, nu o înlocuiește. Valoarea 0, cu frecvența 0, pornește ca „cea mai bună până acum” și este înlocuită de prima valoare care apare.

Exemplul 3 — interval care nu pornește de la 0. Dacă valorile sunt cuprinse între 10 și 14, se folosesc cinci contoare și indicele este x - 10: valoarea 12 mărește contorul de la poziția 2. Pentru șirul contoarele finale sunt [1, 0, 2, 0, 1], deci 10 apare o dată, 12 de două ori și 14 o dată. Fără transformarea x - 10, indicii 10–14 ar ieși din tablou. Valorile cu frecvența 1 sunt cele care apar o singură dată, iar cele cu frecvența 0 lipsesc din șir.

Exemplul 4 — valorile distincte. Numărul valorilor distincte este numărul contoarelor nenule. Pentru șirul , cu valori între 0 și 7, tabloul final are fr[2] = 2, fr[5] = 3, fr[7] = 1, iar celelalte contoare sunt 0. Trei contoare sunt nenule, deci șirul are 3 valori distincte: 2, 5 și 7. Verificarea cu suma frecvențelor este , egală cu numărul de elemente. O valoare apare o singură dată exact când contorul ei este 1: aici, valoarea 7.

Greșeli frecvente

  • Greșit: frecvențele se calculează numărând în tablou pozițiile valorilor.
    Corect: fiecare valoare citită mărește contorul de la indicele egal cu valoarea ei.
  • Greșit: un tablou de frecvențe merge pentru orice valori întregi.
    Corect: este potrivit când valorile sunt într-un interval mic și cunoscut.
  • Greșit: o valoare negativă poate fi folosită direct ca indice.
    Corect: indicele se deplasează cu limita inferioară a intervalului.
în contul tăuPremium

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:

  • OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1632–1633 și 1653–1654; OMEC 4370/2026, anexa 8, p. 155–156; rocnee.eu
  • OMEC 4370/2026, anexa 8, Informatică IX intensiv, p. 155–156
  • OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1632–1633; rocnee.eu
  • OMEC 6930/2025, anexa 66, Informatică IX CS militar, Monitorul Oficial nr. 4 bis/8.01.2026, pp. 2563–2578; cdn.edupedu.ro; centralizator oficial actualizat prin OMEC 3224/2026, legislatie.just.ro
  • OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1653–1654; rocnee.eu

Documente consultate

  • Programa școlară de informatică, clasa a X-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; edu.ro
  • Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro

Desene: Redactare proprie (desen original), conform Programa școlară de informatică, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.