👤

Bac info 2011, Subiectul 3, ex 4​

Bac Info 2011 Subiectul 3 Ex 4 class=

Răspuns :

Răspuns:

Explicație:

Programul urmator pare sa functioneze:

b)

#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("BAC.TXT");

int main()

{

   unsigned long long x;

   unsigned v[10],i,m=0,ct=1,poz,c;

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

       v[i]=0;

   while(fin>>x)

   {

       c=(x%100)/10;

       v[c]++;

       if(m<v[c])

       {

           m=v[c];

           poz=ct;

       }

       ct++;

   }

   cout<<poz;

   fin.close();

   return 0;

}

a) Am declarat un vector de frecventa in care se retin numarul de aparitii ale cifrelor de pe pozitia zecilor a fiecarui numar . Pe masura ce datele din fisier se citesc, valorile din fisier se actualizeaza , iar de fiecare data cand valoarea maxima din vector se schimba , se retine intr-o variabila numarul de ordine al termenului curent . Aceasta valoare va fi afisata la sfarsitul programului . Programul este eficient atat din punct de vedere al timpului de executare , deoarece algoritmul este liniar , precum si a memoriei utilizate , deoarece nu se folosesc tablouri bidimensionale . In schimb se utilizeaza un vector cu o capacitate relativ mica.

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("bac.txt");

int czeci[10], nrordine[10], num,i, z,apmax;

int main()

{

   while (fin >> num)

   {

       ++i;

       z=(num%100)/10;

       ++czeci[z];

       nrordine[z]=i;

   }

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

       if (czeci[i]>apmax) apmax=czeci[i];

   i=0; while (czeci[i]!=apmax) ++i;

   cout << nrordine[i];

}

Explicație: