Informatică, întrebare adresată de andreea2003bianca, 8 ani în urmă

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 mica.
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


boiustef: undeva am vazut problema... e de pe pbinfo?

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

#include <algorithm>

using namespace std;

int v[1001];

struct  data

{

   int cifra,

    nrap;

}vc[10];

bool cresc( const data &a, const data &b)

{

   if (a.nrap != b.nrap) return (a.nrap < b.nrap);

   return (a.cifra < b.cifra);

}

int main()

{

   int n, i, m, cif;

   cin >> n;

   for (i=1; i<=n; ++i) cin >> v[i];

   for (i=0; i<=9; ++i) vc[i].cifra=i;

   for (i=1; i<=n; ++i)

   {

       m=v[i];

       while (m)

       {

           cif=m%10; ++vc[cif].nrap; m/=10;

       }

   }

   sort(vc,vc+10,cresc);

   for (i=0; i<=9; ++i)

       if (vc[i].nrap) cout << vc[i].cifra<<" ";

   return 0;

}

Explicație:

Alte întrebări interesante