👤

Andrei a învățat cum se măsoară timpul (ore şi minute). Se uită la ceas şi vede că e ora 18:12. Ca să
arate că a înțeles cum se măsoară timpul, Andrei se gândește să folosească cele patru cifre pentru a
găsi ora cea mai mică şi ora cea mai mare care se pot forma cu aceste cifre. Găsește că ora cea mai
mică este 11:28 şi ora cea mai mare este 21:18
Cerinţă
Dată fiind o oră sub forma unui număr cu patru cifre, să se determine orele corecte cea mai mică
respectiv cea mai mare, care se pot forma cu cele patru cifre.
Date de intrare
Fişierul de intrare ora.in conţine pe prima linie numărul natural n, format din patru cifre,
reprezentând ora curentă în forma hhmm.
Date de iesire
Fişierul de ieşire ora.out va conţine pe prima linie ora minimă și ora maximă formate cu cele patru
cifre ale orei curente, afişată sub forma hh:mm. Numerele se scriu pe linii separate.


Răspuns :

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("ora.in");

ofstream g("ora.out");

short num, a[4],i,j;

int main()

{

   f >> num;

   while (num)

   {

       a[i++]=num%10;

       num=num/10;

   }

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

       for (j=i+1; j<4; ++j)

       if (a[j]<a[i]) swap(a[j],a[i]);

   g << a[0]<<a[1]<<":"<<a[2]<<a[3]<<endl;

   if (a[3]>a[0] && a[3]<3) swap(a[0],a[3]);

   if (a[3]>a[1] && a[3]<4) swap(a[1],a[3]);

   if (a[2]>a[0] && a[2]<3) swap(a[0],a[2]);

   if (a[2]>a[1] && a[2]<4) swap(a[1],a[2]);

   if (a[2]<a[3] && a[3]<6) swap(a[2],a[3]);

   g << a[0]<<a[1]<<":"<<a[2]<<a[3]<<endl;

}

Explicație:

dacă nu eşti cunoscut cu swap, să ştii că interschimbă valorile.

Dar swap(a[0],a[3]);  este echivalent setului de comenzi:

{ short aux=a[0]; a[0]=a[3]; a[3]=aux; }