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

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


boiustef: de unde e problema?

Răspunsuri la întrebare

Răspuns de boiustef
1

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:

Alte întrebări interesante