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

Fișierul bac.in conține un șir de numere naturale distincte, din intervalul [1,109]. Numerele din șir
sunt separate prin câte un spațiu și cel puțin trei dintre ele au penultima cifră 2 și ultima cifră 0.
Se cere să se afișeze pe ecran cele mai mici trei numere din șir cu proprietatea că au penultima cifră 2
și ultima cifră 0. Numerele determinate sunt afișate în ordine crescătoare, separate prin câte un spațiu.
Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă fișierul conține numerele 9731 50 112 20 8 16 8520 3 2520 1520
pe ecran se vor afișa, în această ordine, numerele: 20 1520 2520

Răspunsuri la întrebare

Răspuns de Utilizator anonim
0

#include <fstream>

using namespace std;

ifstream f_in("bac.in");

ofstream f_out("bac.out");

int main()

{

   int element, soluție[3] = { 0 };

   while (f_in >> element)

       if (element % 100 == 20)

           if (element < soluție[2] || !soluție[2])

               if (element < soluție[1] || !soluție[1]) {

                   if (soluție[1] < soluție[2] || !soluție[2])

                       soluție[2] = soluție[1];

                   if (element < soluție[0] || !soluție[0]) {

                       if (soluție[0] < soluție[1] || !soluție[1])

                           soluție[1] = soluție[0];

                       soluție[0] = element;

                   }

                   else

                       soluție[1] = element;

               }

               else

                   soluție[2] = element;

   for (int element : soluție)

       f_out << element << ' ';

   return 0;

}


wwwglro: F bun codul if (soluție[1] < soluție[2] || !soluție[2])

soluție[2] = soluție[1];
wwwglro: merge fara bucata de cod de mai sus
Alte întrebări interesante