Răspuns :
Răspuns:
int n, v[10] = {0};
cin >> n;
while (n != 0)
{
int c = n % 10;
v[c]++;
n = n / 10;
}
Explicație:
n - numar intreg, v - vector de numere intregi, c - variabila in care se stocheaza ultima cifra din n
Se cere sa se afle frecventa fiecarei cifre din n. De exemplu:
n = 6723120, 0 - 1 data, 1 - o data, 2 - de doua ori, 3 - o data, etc.
Vectorul v este initializat cu 0 la inceput, astfel fiecare valoare (v[1], v[2],...,v[9]) va fi egala cu 0. Il initializam cu 0 pentru ca, la inceput, frecventa fiecarei cifre este 0, urmand sa o gasim noi. v[i] reprezinta frecventa cifrei i.
Luam concret exemplul de mai sus si facem pe pasi:
n = 6723120
c = 0 (ultima cifra din n)
v[c] ++ (adica v[0] va deveni 1)
n = 672312 (se taie ultima cifra)
c = 2 (ultima cifra din n)
v[c] ++ (adica v[2] va deveni 1)
n = 67231 (se taie ultima cifra)
c = 1
v[c] ++ (v[1] devine 1)
n = 6723
c = 3
v[c] ++ (v[3] devine 1)
n = 672
c = 2
v[c] ++ (v[2] devine 2)
n = 67
c = 7, v[c]++ (v[7] devine 1)
n = 6
c = 6, v[c]++ (v[6] devine 1)
n = 0
STOP ALGORITM
La sfarsit, vectorul v va arata astfel, incepand cu pozitia 0:
1, 1, 2, 1, 0, 0, 1, 1
Inseamna ca avem 1 cifra de 0, 1 cifra de 1, 2 cifre de 2, 1 cifra de 3, etc.
Practic ce face algoritmul e sa ia fiecare cifra din n, apoi incrementeaza v[cifra].
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.