Pagina Principală
Ora 10

Suma Cifrelor și Operații de Bază

Calculează suma, produsul și alte operații cu cifrele unui număr

40min teorie + 15min probleme PbInfo
Competența 3.3
Sigla liceului
TEORIE - 40 minute

Ce vei învăța astăzi?

După această lecție, vei stăpâni operațiile de bază cu cifrele unui număr și vei putea rezolva probleme complexe.

Suma cifrelor unui număr
Produsul cifrelor
Suma cifrelor pare/impare
Media cifrelor

Suma Cifrelor - Conceptul Fundamental

Definiție: Suma cifrelor unui număr se obține adunând toate cifrele care îl compun.

Exemplu: Pentru numărul 1234, suma cifrelor = 1 + 2 + 3 + 4 = 10.

1
+
2
+
3
+
4
=
10

Algoritm: Extragem fiecare cifră și o adăugăm la o sumă inițializată cu 0

Analogie: Pușculița cu monede

Gândește-te la suma cifrelor ca la strângerea de monede într-o pușculiță:

PUȘCULIȚA GOALĂ

suma = 0

Inițializare
PRIMA MONEDĂ

Extragi cifra 4 → suma = 4

1234 % 10 = 4
A DOUA MONEDĂ

Extragi cifra 3 → suma = 7

123 % 10 = 3
CONTINUI PÂNĂ LA ULTIMA

Aduni toate cifrele

Final: suma = 10

Produsul Cifrelor - Explicație Detaliată

Definiție: Produsul cifrelor se obține înmulțind toate cifrele care compun numărul.

ATENȚIE CRITICĂ: Se inițializează cu 1 (nu cu 0), pentru că 1 este elementul neutru la înmulțire.

🎯 Exemplu pentru n=1234:
1
×
2
×
3
×
4
=
24

Algoritm: Inițializăm produsul cu 1, extragem fiecare cifră și o înmulțim

CE SE ÎNTÂMPLĂ DACĂ NUMĂRUL CONȚINE 0?
Pentru n=205
Inițializare: produs = 1
Cifra 1: 5
produs = 1 × 5 = 5
Cifra 2: 0
produs = 5 × 0 = 0
Cifra 3: 2
produs = 0 × 2 = 0
REZULTAT FINAL: 0
Dacă există o cifră 0, produsul devine 0 pentru totdeauna!
Caracteristică Suma Cifrelor Produsul Cifrelor De ce este diferit?
Inițializare suma = 0 produs = 1 0 este neutru la adunare, 1 la înmulțire
Operație în buclă suma += cifra produs *= cifra += pentru adunare, *= pentru înmulțire
Efectul lui 0 0 se adaugă, suma crește puțin 0 distruge produsul → devine 0 Orice × 0 = 0
Exemplu: n=203 0+2+0+3 = 5 1×0×2×0×3 = 0 Suma e 5, produsul e 0
Test rapid de înțelegere:

Care este produsul cifrelor pentru numărul 500?

Truc mnemonic pentru a nu uita:

"Suma începe de la Zero, Produsul de la Unu"

SUMA = pornesc de la 0
Pentru că 0 + cifră = cifră
PRODUS = pornesc de la 1
Pentru că 1 × cifră = cifră

Operațiile de Bază cu Cifrele

Suma Cifrelor

S = Σ cifre

Aduni toate cifrele

n=1234 → S=1+2+3+4=10

Produsul Cifrelor

P = Π cifre

Înmulțești toate cifrele

n=1234 → P=1×2×3×4=24

Suma Cifrelor Pare

Spare = Σ (cifre % 2 == 0)

Aduni doar cifrele pare

n=1234 → S=2+4=6

Media Cifrelor

M = S / nr_cifre

Suma împărțită la numărul de cifre

n=1234 → M=10/4=2.5
ALGORITM SumaCifre VARIABILE n, suma, cifra: întreg ÎNCEPUT CITESTE n suma ← 0 ┌ CÂT TIMP n ≠ 0 EXECUTĂ │ cifra ← n % 10 │ suma ← suma + cifra │ n ← n / 10 └■ SCRIE "Suma cifrelor: ", suma SFÂRȘIT

Important: Pentru n=0, bucla nu se execută, suma rămâne 0 (corect, suma cifrelor lui 0 este 0).

ALGORITM ProdusCifre VARIABILE n, produs, cifra: întreg ÎNCEPUT CITESTE n produs ← 1 ! ATENȚIE: 1, nu 0! ┌ CÂT TIMP n ≠ 0 EXECUTĂ │ cifra ← n % 10 │ produs ← produs * cifra │ n ← n / 10 └■ SCRIE "Produsul cifrelor: ", produs SFÂRȘIT

Atenție la inițializare: Produsul se inițializează cu 1, nu cu 0! 0×oricе = 0 ar distruge calculul.

ALGORITM SumaCifrePare VARIABILE n, suma, cifra: întreg ÎNCEPUT CITESTE n suma ← 0 ┌ CÂT TIMP n ≠ 0 EXECUTĂ │ cifra ← n % 10 │ ┌ DACA cifra % 2 = 0 ATUNCI │ │ suma ← suma + cifra │ └ SFÂRȘIT DACA │ n ← n / 10 └■ SCRIE "Suma cifrelor pare: ", suma SFÂRȘIT

Test de paritate: cifra % 2 == 0 testează dacă cifra este pară. Pentru cifre impare: cifra % 2 == 1.

Operație Inițializare Operație în buclă Exemplu n=123
Suma suma = 0 suma = suma + cifra 1+2+3 = 6
Produs produs = 1 produs = produs * cifra 1×2×3 = 6
Suma pare suma = 0 dacă (cifra%2==0) suma+=cifra 2 = 2
Media suma=0, cnt=0 suma+=cifra, cnt++ 6/3 = 2.0

Exercițiu de completare - Suma cifrelor pare:

Completează codul C++ pentru suma cifrelor pare:
#include <iostream>
using namespace ______;
______ main() {
    int n;
    cin >> ______;
    int sumaPare = ______;
    ______ (n != 0) {
        int cifra = n ______ 10;
        ______ (cifra ______ 2 == 0) { // Verifică dacă cifra este pară
            sumaPare ______ cifra;
        }
        n ______ 10;
    }
    cout << ______;
    return ______;
}
Bancă de cuvinte:
std int n 0 while % if += /= sumaPare

Test de înțelegere: Ce se întâmplă cu produsul?

Test rapid:

Care va fi produsul cifrelor pentru numărul 205?

Algoritmul de calcul:
produs ← 1 ┌ CÂT TIMP n ≠ 0 EXECUTĂ │ cifra ← n % 10 │ produs ← produs * cifra │ n ← n / 10 └■

Capcane comune și soluții

Greșeli frecvente la operații cu cifre:

❌ Inițializare greșită pentru produs
produs ← 0 // GREȘIT! while (n != 0) { produs = produs * cifra; // 0×oricе = 0 }

Soluție: produs ← 1 (element neutru pentru înmulțire)

❌ Uitarea cazului n=0 la produs

Pentru n=0, produsul ar trebui să fie 0 (singura cifră este 0), dar bucla nu se execută.

if (n == 0) { produs = 0; } else { produs = 1; while (n != 0) { // calcul normal } }
❌ Confuzie între suma și produs

Folosirea aceluiași algoritm pentru ambele operații fără ajustări.

Best Practices pentru operații cu cifre:

✅ Inițializare corectă: suma=0, produs=1, cnt=0
✅ Tratează n=0 separat pentru fiecare operație
✅ Folosește nume descriptive: sumaPare, produsCifre, mediaCifre
✅ Testează cu numere care conțin 0 (205, 100, 5007)
✅ Verifică paritatea corect: cifra%2==0 pentru pare, cifra%2==1 pentru impare
PROBLEME PBINFO - 15 minute

PbInfo #3 - Suma cifrelor pare

Enunț:

Cerință: Se citește un număr natural n. Să se calculeze suma cifrelor pare ale lui n.

Date de intrare:

Programul citește de la tastatură numărul n.

Date de ieșire:

Programul va afișa pe ecran suma cifrelor pare ale lui n.

Exemplu:

Intrare:

123456

Ieșire:

12

Explicație: Cifrele pare sunt 2, 4, 6 → 2+4+6 = 12

Cum gândim soluția:
  1. Citim numărul n
  2. Inițializăm sumaPare ← 0
  3. Folosim while (n != 0) pentru a extrage cifrele
  4. La fiecare iterație:
    • cifra = n % 10 (extrage ultima cifră)
    • Dacă cifra % 2 == 0 (cifra este pară):
    • sumaPare = sumaPare + cifra
    • n = n / 10 (elimină cifra)
  5. Afișăm sumaPare
Execuție pentru n=13579 (toate impare):
n=13579: cifra=9 (impar) → sumaPare=0 → n=1357
n=1357: cifra=7 (impar) → sumaPare=0 → n=135
n=135: cifra=5 (impar) → sumaPare=0 → n=13
n=13: cifra=3 (impar) → sumaPare=0 → n=1
n=1: cifra=1 (impar) → sumaPare=0 → n=0
REZULTAT: Suma cifrelor pare = 0 (corect, toate sunt impare)
Ce trebuie să verifici mereu?
  • Cazul n=0: are o cifră (0), care este pară → suma=0
  • Numere cu toate cifrele impare: suma va fi 0
  • Numere care conțin 0: 0 este par, se adaugă la sumă
  • Condiția de paritate: cifra % 2 == 0
Scrie soluția în C++:
Soluție corectă:
#include <iostream>
                    using namespace std;

                    int main() {
                        int n;
                        cin >> n;
                        
                        int sumaPare = 0;
                        
                        // Pentru n=0, bucla nu se execută, suma rămâne 0 (corect)
                        while (n != 0) {
                            int cifra = n % 10;
                            
                            // Verifică dacă cifra este pară
                            if (cifra % 2 == 0) {
                                sumaPare += cifra;
                            }
                            
                            n /= 10;  // Elimină ultima cifră
                        }
                        
                        cout << sumaPare;
                        
                        return 0;
                    }

Ce învățăm din această problemă:

  • Condiții în buclă: Folosim if pentru a filtra cifrele
  • Test de paritate: cifra % 2 == 0 pentru cifre pare
  • Acumulare condiționată: Adunăm doar dacă condiția este adevărată
  • Cazuri speciale: n=0, numere cu toate cifrele impare

PbInfo #4 - Produsul cifrelor

Problemă care necesită atenție la inițializare

Enunț:

Cerință: Se citește un număr natural n. Să se calculeze produsul cifrelor lui n.

Date de intrare:

Programul citește de la tastatură numărul n.

Date de ieșire:

Programul va afișa pe ecran produsul cifrelor lui n.

Exemplu:

Intrare:

123

Ieșire:

6

Explicație: 1×2×3 = 6

Cum gândim soluția:
  1. Citim numărul n
  2. ATENȚIE: Inițializăm produs ← 1 (nu 0!)
  3. Tratăm cazul special n=0 (are o cifră, 0, produsul este 0)
  4. Pentru n≠0, folosim while (n != 0):
    • cifra = n % 10
    • produs = produs * cifra
    • n = n / 10
  5. Afișăm produsul
Execuție pentru n=205 (cu 0 în număr):
n=205: cifra=5 → produs=1×5=5 → n=20
n=20: cifra=0 → produs=5×0=0 → n=2
n=2: cifra=2 → produs=0×2=0 → n=0
REZULTAT: Produs = 0 (pentru că 5×0×2=0)
De ce această problemă este mai dificilă?

Trebuie să ai grijă la două aspecte critice:

  1. Inițializarea corectă: produs = 1 (element neutru pentru înmulțire)
  2. Tratarea lui n=0: Dacă n=0, produsul este 0 (singura cifră este 0)
Scrie soluția în C++:
Soluție corectă:
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    
    int produs;
    
    // Caz special: n = 0 are o cifră (0), produsul este 0
    if (n == 0) {
        produs = 0;
    } else {
        // Pentru n ≠ 0, inițializăm cu 1 (element neutru)
        produs = 1;
        
        while (n != 0) {
            produs *= n % 10;   // Înmulțește cu ultima cifră
            n /= 10;            // Elimină ultima cifră
        }
    }
    
    cout << produs;
    
    return 0;
}
Varianta alternativă (mai scurtă):
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    
    // Varianta scurtă: tratăm n=0 cu un if special
    if (n == 0) {
        cout << 0;
        return 0;
    }
    
    int produs = 1;
    
    while (n != 0) {
        produs *= n % 10;
        n /= 10;
    }
    
    cout << produs;
    
    return 0;
}

Ce învățăm din această problemă:

  • Inițializare corectă: produs = 1 (nu 0!) pentru înmulțire
  • Cazul n=0: Trebuie tratat separat (produsul este 0)
  • Zero în număr: Dacă numărul conține 0, produsul va fi 0
  • Operatorul *=: Versiune scurtă pentru înmulțire repetată
EXERCIȚII PRACTICE - 10 minute

Exercițiul Practic: Operații cu cifre

Sarcini de lucru

Completează următoarele sarcini pentru a-ți consolida cunoștințele despre operațiile cu cifre

Sarcina 1: Analiză algoritm produs cifre

Analizează algoritmul pentru produsul cifrelor:

Pentru n=304, care va fi rezultatul și de ce?

Soluție pentru Sarcina 1:

Analiza pentru n=304:

  • Algoritmul pentru produs:
  • Dacă n=304 ≠ 0, inițializăm produs = 1
  • Bucla while se execută:
  • Iterația 1: n=304, cifra=4 → produs = 1×4 = 4, n devine 30
  • Iterația 2: n=30, cifra=0 → produs = 4×0 = 0, n devine 3
  • Iterația 3: n=3, cifra=3 → produs = 0×3 = 0, n devine 0
  • Rezultat corect: 0
  • Explicație: Produsul este 0 pentru că numărul conține cifra 0. Orice înmulțit cu 0 dă 0.

Concluzie importantă: Dacă un număr conține cel puțin o cifră 0, produsul cifrelor va fi întotdeauna 0.

Sarcina 2: Suma cifrelor impare

Cerință: Implementează în C++ un program care citește un număr și afișează suma cifrelor impare ale acestuia.

Soluție pentru Sarcina 2:
#include <iostream>
                                using namespace std;

                                int main() {
                                    int n;
                                    cin >> n;
                                    
                                    int sumaImpare = 0;
                                    
                                    // Pentru n=0, bucla nu se execută, suma rămâne 0 (corect)
                                    while (n != 0) {
                                        int cifra = n % 10;
                                        
                                        // Verifică dacă cifra este impară
                                        if (cifra % 2 == 1) {
                                            sumaImpare += cifra;
                                        }
                                        
                                        n /= 10;  // Elimină ultima cifră
                                    }
                                    
                                    cout << sumaImpare;
                                    
                                    return 0;
                                }

Explicații importante:

  • Analog cu suma cifrelor pare: Același algoritm, doar condiția se schimbă
  • Test de imparitate: cifra % 2 == 1 pentru cifre impare
  • Varianta alternativă: cifra % 2 != 0 funcționează la fel
  • Cazul n=0: Funcționează corect - bucla nu se execută, suma rămâne 0
  • Teste recomandate:
  • n=123456 → cifre impare: 1,3,5 → suma = 1+3+5 = 9
  • n=2468 → toate cifrele pare → suma = 0
  • n=13579 → toate impare → suma = 1+3+5+7+9 = 25
  • n=0 → nici o cifră impară → suma = 0

Descarcă toate exercițiile și soluțiile