Fisierul bac.in contine un sir de numere naturale distincte, din intervalu [1, 10 la puterea 9]. Numerele din sir sunt separate prin cate un spatiu si cel putin trei dintre ele au penultima cifra 2 si ultima cifra 0. Se cere sa se afiseze pe ecran cele mai mari 3 numere din sir cu proprietatea ca au penultima cifra 2 si ultima cifra 0. Numerele determinate sunt afisate in ordine crescatoare, separate prin cate un spatiu. Proiectati un algoritm eficient din punctul de vedere al memoriei utilizate si al timpului de executare.

Exemplu: daca fisierul contine numerele 9731 50 112 20 8 16 8520 3 2520 1520

pe ecran se vor afisa, in aceasta ordine, numerele: 1520 2520 8520

a. Scrieti programul in C/C++ corespunzator algoritmului proiectat.

b. Descrieti in limbaj natural algoritmul proiectat, justificand eficienta acestuia.


Răspuns :

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("bac.in");

int main()

{

   int x,a,b,c,ok=0,ok1=0,ok2=0;

   while(f>>x)

   {

       if(x%100==20)

       {

       if(ok2==0)

       {if(ok==0)

           {a=x;

           ok=1;

           }

       else

       if(ok1==0)

       {

           if(a<x)

           {

           b=a;

           a=x;

           }

           else

               b=x;

               ok1=1;

       }

       else

       {

           if(b<x)

           {

               c=b;

               b=x;

           }

           else

                c=x;

               ok2=1;

       }

}

       else

       {

           if(a<=x)

           {

           c=b;

           b=a;

           a=x;

           }

           else

           {

if(b<=x)

               {

               c=b;

               b=x;

               }

               else

                   if(c<x)

                   c=x;

           }

       }

       }

   }

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

   return 0;

}

Explicație:

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că ați găsit conținutul oferit util și inspirațional. Dacă aveți întrebări suplimentare sau doriți asistență, vă încurajăm să ne contactați. Ne-ar face plăcere să reveniți și nu uitați să ne adăugați în lista dumneavoastră de favorite!


RO Learnings: Alte intrebari