👤

Fisierul bac.txt conține cel mult 1000000 de numere naturale din intervalul [0,10^9].
Se cere sa se afișeze pe ecran, separate prin câte un spațiu, cifrele care apar de cele mai multe ori in scrierea numerelor din fișier. Pentru determinarea cifrelor cerute se utilizează un algoritm eficient din punct de vedere al timpului de executare.

Exemplu:
dacă fișierul conține numerele
399 1777578 721149 1212178
atunci pe ecran se afiseaza valorile de mai jos, nu neaparat in aceasta ordine
7 1


Răspuns :

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("bac.txt");

long long num, cif, fr[10], apmax;

int main()

{

   while (f >> num)

   {

       if (num==0) ++fr[0];

       else

       {

           while (num)

           {

               cif=num%10;

               ++fr[cif];

               num/=10;

           }

       }

   }

   for (cif=0; cif<10; ++cif)

   {

       if (fr[cif]>apmax) apmax=fr[cif];

   }

   for (cif=0; cif<10; ++cif)

       if (fr[cif]==apmax) cout << cif << " ";

}

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("bac.txt");

int x, ap[9],maxx=-1;

int main()

{

   while(f>>x)

   {

       while(x)

       {

           ap[x%10]++;

           x/=10;

       }

   }

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

       if(maxx<ap[i])

           maxx=ap[i];

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

       if(ap[i]==maxx)

       cout<<i<<' ';

   return 0;

}

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!


En Studentsy: Alte intrebari