Didaxis
lecție · Informatică

Produsul cartezian

Generarea tuplurilor din mulțimi date.

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

Pe scurt

Produsul cartezian conține toate perechile ordonate cu și . Dacă și , rezultatele sunt , , și . Dacă mulțimile au și elemente, produsul are perechi.

Desen la lecția „Produsul cartezian”
2în detaliustratul 2 din 3 · pentru clasă și Bacalaureat

În detaliu

Produsul cartezian al mulțimilor este mulțimea tuturor șirurilor ordonate cu . Numărul lui de elemente este produsul numerelor de elemente: . Prin backtracking se generează cu un vector : pe nivelul se încearcă pe rând fiecare element al mulțimii . Nu există o condiție suplimentară de continuare, deci orice prefix se poate extinde, iar fiecare șir apare o singură dată. Ordinea în care sunt încercate elementele fiecărei mulțimi determină ordinea de generare: ultimul nivel se schimbă cel mai des, ca la cifrele unui contor. Elementele pot fi egale pe poziții diferite, de aceea perechile și aparțin produsului . Dacă una dintre mulțimi este vidă, produsul este vid.

Exemplul 1 — și . Vectorul n[k] memorează numărul de elemente ale mulțimii , cu elementele .

#include <iostream>
using namespace std;
int x[10], n[10] = {0, 2, 3}, m = 2, nr = 0;
void bt(int k) {
    if (k > m) {
        cout << ++nr << ": " << x[1] << " " << x[2] << "\n";
        return;
    }
    for (int v = 1; v <= n[k]; ++v) {
        x[k] = v;
        bt(k + 1);
    }
}
int main() {
    bt(1);
    return 0;
}

Ordinea generării este , , , , , ; a cincea soluție este . În total sunt perechi, iar programul afișează liniile numerotate de la 1: 1 1 până la 6: 2 3.

Exemplul 2 — trei mulțimi și o restricție. Pentru , și produsul are elemente. Dacă se cer doar tripletele în care , condiția se verifică la nivelul 3: pentru fiecare valoare a lui (3 alegeri) și a lui (2 alegeri), are o singură valoare permisă, cea diferită de . Rămân triplete: , , , , și . Cu restricție, problema nu mai este un produs cartezian pur, dar se rezolvă cu același schelet, la care se adaugă o condiție de continuare.

Într-un produs cartezian cu mulțimi, ordinea generării se comportă ca un contor cu baze diferite: ultimul nivel parcurge toate valorile lui înainte ca penultimul să avanseze. Primul nivel avansează de ori, iar pentru fiecare valoare a lui se generează tupluri. În exemplul 2, tupluri cu sunt primele din cele 12, apoi urmează cele cu și cele cu . De aceea poziția unui tuplu în ordinea de generare se calculează ca într-un sistem de numerație mixt. În exemplul 1, poziția perechii , numerotată de la 1, este : pentru se obține , iar pentru se obține 6, adică ultima. Timpul de generare este proporțional cu numărul tuplurilor înmulțit cu lungimea lor.

Exemplul 3 — coduri. Un cod format din două litere (A, B) și o cifră (1, 2, 3) este un element al produsului , cu coduri, de la AA1 la BB3. Literele se pot repeta, deci AA1 este un cod valid, spre deosebire de aranjamente, unde repetiția este interzisă.

3pentru admiterestratul 3 din 3 · pentru examene

Pentru admitere

Nu confunda produsul cartezian cu alegerea fără repetiție. Dacă , perechile și sunt permise și există patru rezultate; aranjamentele de 2 din ar fi doar 2. Dacă una dintre mulțimi este vidă, produsul este vid. Când subiectul adaugă o restricție, numără pe niveluri: o restricție între două poziții se aplică la poziția mai mare dintre ele și reduce alegerile de pe acel nivel. Numărul de linii afișate de un program cu restricții nu este întotdeauna produsul dimensiunilor: depinde de câte valori sunt acceptate pe fiecare nivel, după ce nivelurile anterioare au fost fixate.

Exemplu în formatul examenului. Câte linii afișează programul de mai jos?

#include <iostream>
using namespace std;
int n[4] = {0, 3, 2, 2}, x[4];
void bt(int k) {
    if (k == 4) {
        cout << x[1] << x[2] << x[3] << "\n";
        return;
    }
    for (int v = 1; v <= n[k]; ++v)
        if (k < 3 || v != x[2]) {
            x[k] = v;
            bt(k + 1);
        }
}
int main() {
    bt(1);
    return 0;
}
  • a) 6
  • b) 9
  • c) 12
  • d) 24

Răspunsul corect este a). Mulțimile au 3, 2 și 2 elemente, deci fără restricție ar fi linii. Condiția k < 3 || v != x[2] acceptă la nivelul 3 numai valorile diferite de , deci pe acel nivel rămâne o singură alegere. Numărul liniilor este . Varianta c) este numărul tripletelor fără restricție.

Al doilea exemplu. Câte elemente are produsul și câte dintre ele încep cu 2? Produsul are elemente. Cele care încep cu 2 sunt , , și , adică elemente: prima poziție are o singură valoare, iar celelalte rămân libere.

Greșeli frecvente

  • Greșit: produsul cartezian cere elemente distincte pe poziții diferite.
    Corect: elementele se pot repeta; perechea aparține produsului .
  • Greșit: numărul tuplurilor este suma numerelor de elemente.
    Corect: este produsul lor.
  • Greșit: dacă una dintre mulțimi este vidă, produsul conține tuplul vid sau un tuplu parțial.
    Corect: produsul este vid.
î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:

  • OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa XI; plan de încadrare: OMEC 7723/2024, anexa 2, tabelele 1–25, legislatie.just.ro; filiera tehnologică: OMEC 7724/2024, anexa 4, tabelul calificării, legislatie.just.ro
  • 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–4; edu.ro

Documente consultate

  • UNSTPB, admitere 2026, anexa XI-3, p. Anx XI-6–7
  • Programa școlară de informatică, clasa a XI-a (OMECI 5099/2009, anexa 5), CNCE, p. 4–5; rocnee.eu
  • Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației, p. 4–5; edu.ro
  • Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro

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

lecțiile sunt gratuite

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