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

Se consideră fişierul BAC.TXT ce conţine cel mult un milion de numere naturale separate prin spatii, fiecare număr având cel mult nouă cifre.
Scrieţi un program C/C++ care citeşte toate numerele din fişierul BAC.TXT şi determină, folosind un algoritm eficient din punct de vedere timpului de executare, cele mai mari două numere de trei cifre care nu se află în fişier. Cele două numere vor fi afişate pe ecran în ordine descrescătoare, cu un spaţiu între ele. Dacă nu pot fi determinate două astfel de numere, programul va afişa pe ecran valoarea 0.
Exemplu: dacă fişierul BAC.TXT conţine numerele:
12 2345 123 67 989 6 999 123 67 989 999
atunci programul va afişa
998 997

Răspunsuri la întrebare

Răspuns de uionutalin
7

Răspuns:

#include<iostream>

#include<fstream>

using namespace std;

ifstream f("BAC.TXT");

int main()

{

   int v[1000]= {0},x,nr=0,a=0,b=0,i;

   while(f>>x)

       if(x>=100 && x<=999)

           v[x]++;

   for(i=999; i>=100 && nr<2; i--)

       if(v[i]==0)

       {

           if(a==0)

           {

               a=i;

               nr++;

           }

           else

           {

               b=i;

               nr++;

           }

       }

   if(nr<2)

       cout<<0;

   else

       cout<<a<<" "<<b;

   return 0;

}

Explicație:

Alte întrebări interesante