Sunteți pe pagina 1din 18

Algoritmi elementari pentru prelucrare

a numerelor
(în pseudocod/C++)

1 2 3 4 5
CUPRINS
• Determinarea cifrelor unui număr întreg
• Algoritmul de descompunere a unui număr întreg în cifre
• Exemple de probleme în care se folosește algoritmul de
descompunere a unui număr întreg în cifre
• Problema 1: Algoritmul de determinare a numărului de cifre
a unui număr întreg
• Tema de casă
Determinarea cifrelor unui număr întreg

• Care credeți că este operația prin care se poate determina ultima cifră a
unui număr?
• Cum vom scrie în pseudocod operația prin care se atribuie unei variabile
c ultima cifra a unui număr întreg n?

Operația prin care se determină ultima cifră a unui număr este:


(1) c  n % 10;
• Care credeți că este operația prin care se poate ”șterge” sau ”elimina”
ultima cifră a unui număr întreg?
• Cum vom scrie în pseudocod operația prin care se ”elimină” ultima cifră
unui număr întreg n?

Operația prin care se ”elimină” ultima cifră a unui număr este:


(2) n  [n / 10];
Determinarea cifrelor unui număr întreg

• Cum credeți că ar trebui să procedăm ca să determinăm toate


cifrele unui număr, având în vedere că nu știm câte cifre are
acesta?

• Ce structură vom folosi pentru a determina toate cifrele unui


număr?

• În ce ordine se vor obține cifrele numărului în urma prelucrării?


Algoritmul de descompunere a unui număr întreg
în cifre

Enunț:
Se introduce de la tastatură un număr întreg în variabila n. Scrieți un
algoritm în pseudocod care determină și afișează cifrele numărului introdus ( în
ordine inversă).

Exemplu:
Dacă n= 3517 atunci algoritmul va afișa cifrele lui n astfel: 7 1 5 3
Algoritmul de descompunere a unui număr întreg
în cifre

• Care sunt datele, respectiv tipul lor, necesare


rezolvării algoritmului și ce reprezintă fiecare?
• Ce structură vom utilizat pentru a determina cifrele
numărului?
• Care este expresia structurii, necesară repetării
operațiilor?
• Care sunt operațiile din interiorul structurii repetitive
care duc la rezolvarea algoritmului?
Algoritmul de descompunere a unui număr întreg
în cifre(în pseudocod)
Rezolvare: Verificare:
n c Se afișează
n,c întreg; /* sau c natural;*/
Citește n; 3517 7 7
Cât – timp n>0 execută
Început 351 1 1
c  n % 10;/*ultima cifră*/ 35 5 5
Scrie c,” ”;/*afișare cifră*/
n  [n / 10];/*ștergere cifră*/ 3 3 3
Sfârșit 0
Algoritmul de descompunere a unui număr întreg
în cifre(în C++)
Rezolvare: Verificare:
int main() n c Se afișează
{
int n,c; 3517 7 7
cout << "n= ";
351 1 1
cin>>n;
while(n!=0){ 35 5 5
c=n%10;//determină ultima cifră
cout<<c<<" ";//afișează cifra 3 3 3
n=n/10;//elimină ultima cifră
} 0
return 0;
}
Exemple de probleme în care se folosește algoritmul de
descompunere a unui număr întreg în cifre

Folosind algoritmul studiat puteți:


• calcula suma tuturor cifrelor sau suma cifrelor
pare/impare;
• determina câte cifre are un număr sau câte cifre
pare sau impare are un număr;
• căuta o anumită cifră dată;
• determina cifra minimă sau maximă;
• construi un nou număr folosind cifre(pare,
impare, divizibile cu x) din numărul citit inițial, etc.
Problema 1:
Algoritmul de determinare a numărului de cifre a
unui număr întreg

Enunț:
Se introduce de la tastatură un număr întreg în variabila n. Scrieți un
algoritm în pseudocod care determină și afișează câte cifre are numărul introdus.

Exemplu:
Dacă n= 3517 atunci algoritmul va afișa valoarea 4, deoarece numărul 3517
are 4 cifre.
Problema 1:
Algoritmul de determinare a numărului de cifre a
unui număr întreg

• Care sunt datele, respectiv tipul lor, necesare rezolvării


algoritmului și ce reprezintă fiecare?
• Putem folosi algoritmul de descompunere a unui număr în cifre
în rezolvarea problemei noastre?
• Ce trebuie adăugat algoritmului de descompunere a unui număr
în cifre astfel încât să numărăm cifrele?
• Care sunt operațiile din interiorul structurii repetitive care duc la
rezolvarea algoritmului?
Problema 1: Algoritmul de determinare a numărului de cifre
a unui număr întreg(în pseudocod)
Rezolvare: n,c,i întreg; /* sau n,c,i natural;*/
Citește n;
i0;
Cât – timp n>0 execută
Început
c  n % 10; /*ultima cifră*/
i  i + 1; /*se numără cifra*/
n  [n / 10]; /*ștergere cifră*/
Sfârșit
Scrie ”Numărul cifrelor este: ”,i; Verificare:

n c i( i=0)
3517 7 1
351 1 2
35 5 3
3 3 4
0
Problema 1: Algoritmul de determinare a numărului de cifre
a unui număr întreg(în C++)
Rezolvare: int main()
{
int n,c,i=0;
cout << "n= ";
cin>>n;
while(n!=0){
c=n%10;//aflăm cifra
i++;//numărăm cifra
n=n/10;//eliminam cifra
} Verificare:
cout<<"Nr. de cifre este: "<<i<<endl;
return 0; n c i( i=0)
}
3517 7 1
351 1 2
35 5 3
3 3 4
0
Test de 1. Care dintre variantele de mai jos, ca date de intrare, determină ca valoarea
verificare a finală a variabilei contor, din algoritmul de determinare a numărului de cifre a unui
cunoștințelor număr întreg, să fie 4?
a)4
dobândite
b)0000
c)1000
d)444
2. Se știe că valoarea finală a variabilei contor din algoritmul de determinare a
numărului de cifre a unui număr întreg, este 3. Pentru câte date de intrare
obținem această valoare?
e)3
f)333
g)900
h)Nu se poate determina numărul.
3. În algoritmul de determinare a numărului de cifre a unui număr întreg cu ce
valoare trebuie inițializată valoarea contorului ?
i)0
j)– 1
k)1
l)2
Tema de casă
1. (Suma a cifrelor unui număr) Se citeşte de la tastatură un număr întreg în variabi
la n. Scrieţi un algoritm în pseudocod/program în C++ care calculează şi afişează s
uma cifrelor numărului n citit iniţial.
Exemplu: Pentru n = 1234 se va afişa valoarea 10.
 
2. (Număr de cifre pare a unui număr) Se citeşte de la tastatură un număr întreg în
variabila n. Scrieţi un algoritm în pseudocod/program în C++ care determină şi afi
şează câte cifre pare are numărul n citit iniţial.
Exemplu: dacă se citeşte n = 3825, algoritmul va afişa valoarea 2 (cifra 2 și 8 sunt cif
rele pare din număr).
 
3. (Număr de cifre impare a unui număr) Se citeşte de la tastatură un număr întreg
în variabila n. Scrieţi un algoritm în pseudocod/program în C++ care determină şi
afişează câte cifre impare are numărul n citit iniţial.
Exemplu: dacă se citeşte n = 3825, algoritmul va afişa valoarea 2(cifra 3 și 5 sunt cifr
ele impare ale numărului).
Tema de casă
4. (Cifra maximă a unui număr) Se citeşte de la tastatură un număr întreg în variabi
la n. Scrieţi un algoritm în pseudocod/program în C++ care determină şi afişează
cifra maximă a numărului n citit iniţial.
Exemplu: dacă se citeşte n = 3825, algoritmul va afişa mesajul Cifra maximă este: 8.
 
5. (Cifra minimă a unui număr)Se citeşte de la tastatură un număr întreg în variabil
a n. Scrieţi un algoritm în pseudocod/program în C++ care determină şi afişează c
ifra minimă a numărului n citit iniţial.
Exemplu: dacă se citeşte n = 3825, algoritmul va afişa mesajul Cifra minimă este: 2.
 
6. (Numărul de apariții a unei cifre într – un num ăr) Se citesc de la tastatură un nu
măr întreg în variabila n și o cifră în variabila d. Scrie ţi algoritm în pseudocod/progr
am în C++ care determină şi afişează numărul de apariții a cifrei d în numărul n cit
it iniţial. Dacă cifra căutată nu se găsește se va afi șa mesajul ”NU EXIST Ă”.
Exemplu: dacă se citeşte n = 3525 și d = 5, algoritmul va afişa valoarea 2.
Tema de casă
7. (Sufixele unui număr) Se citeşte de la tastatură un număr natural nenul n. Scrie ţi
algoritm în pseudocod/program în C++ care determină şi afişează toate sufixele n
umărului natural citit iniţial.
Observație: Sufixele unui număr se obţin prin eliminarea repetată a ultimei cifre.
Exemplu: dacă se citeşte n = 3825, algoritmul va afişa:
3825
382
38
3
 8. (Media aritmetică a cifrelor pare și impare) Se citeşte un număr natural nenul n,
de maxim 8 cifre, de la tastatură. Scrieţi algoritm în pseudocod/program în C++ ca
re calculează şi afişează media aritmetică a cifrelor pare, respectiv impare din num ăr
ul citit iniţial.
Exemplu: dacă se citeşte n = 3825, algoritmul va afişa: 5(suma cifrelor pare, adic ă (8
+2)/5=10) și 4, adică (3+5)/2=4
Tema de casă
9. (Cifra de rang k) Se citeşte un număr natural nenul n, de maxim 8 cifre, de la tast
atură şi o valoarea naturală din intervalul [1,8], în variabila k. Scrie ţi un algoritm în p
seudocod/program în C++ care determină şi afişează cifra de rang k din numărul n
citit iniţial(rangul unei cifre se determină de la dreapta spre stânga).
Exemplu: dacă se citeşte n = 3825 și k=3, algoritmul va afişa cifra 8.

10. (Căutarea unei cifre) Se citeşte un număr natural nenul n, de maxim 8 cifre, de l
a tastatură şi o valoarea naturală din intervalul [0,9], în variabila c. Scrie ţi algoritm în
pseudocod/program în C++ care verifică dacă cifra c există cel puţin o dată în num
ărul citit iniţial. Dacă cifra există se va afişa mesajul „EXIST Ă”, în caz contrar se va afi
şa mesajul „NU EXISTĂ”.

S-ar putea să vă placă și