Cerința
Se dau n numere naturale. Afișați cifrele care apar în scrierea zecimală a acestor numere, în ordinea crescătoare a numărului de apariții. Dacă două cifre au același număr de apariții, se va afișa mai întâi cifra mai mică,
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale.
Date de ieșire
Programul va afișa pe ecran numărul cifrele care apar în scrierea zecimală a numerelor citite, în ordinea cerută, separate prin exact un spațiu.
Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000
Exemplu
Intrare
5
124 229 1322 4 534
Ieșire
5 9 1 3 4 2
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int n, num, ap[10],i,j, cif[10],c;
int main()
{
for (i=0; i<10; ++i) cif[i]=i;
cin >> n;
for (i=1; i<=n; ++i)
{
cin >> num;
while (num>9)
{
c=num%10;
++ap[c];
num/=10;
}
++ap[num];
}
for (i=0; i<10; ++i)
cout << cif[i] << " ";
cout << "\n";
for (i=0; i<10; ++i)
cout << ap[i] << " ";
cout << "\n";
bool sortat;
do
{
sortat = true;
for(int i = 0 ; i < 9 ; i ++)
if(ap[i] > ap[i+1])
{
int aux = ap[i];
ap[i] = ap[i+1];
ap[i+1] = aux;
sortat = false;
aux=cif[i];
cif[i]=cif[i+1];
cif[i+1]=aux;
}
else
if (ap[i]==ap[i+1] && cif[i]>cif[i+1])
{
int aux=cif[i];
cif[i]=cif[i+1];
cif[i+1]=aux;
sortat=false;
}
}
while(!sortat);
c=0; while (ap[c]==0) ++c;
for (i=c; i<10; ++i)
cout << cif[i] << " ";
}
Explicație: