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

!!! Plss problema #2290 Oglindite de pe pbinfo
•Cerința

Se dau n numere naturale. Afișați numărul pentru care diferența în valoare absolută dintre el și oglinditul său este minimă. Dacă există mai multe asemenea numere, afișați-l pe cel mai mic.

•Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale.

•Date de ieșire

Programul va afișa pe ecran numărul determinat x.

Restricții și precizări

1 ≤ n ≤ 1000

cele n numere citite vor fi mai mici decât 1.000.000.000


•Exemplu

Intrare
4 127 964 801 601
Ieșire
601

•Explicație

oglinditul lui 127 este 721, iar diferența este 594

oglinditul lui 964 este 469, iar diferența este 495

oglinditul lui 801 este 108, iar diferența este 693

oglinditul lui 601 este 106, iar diferența este 495

Diferența minimă este 495 și se obține pentru 601​

Răspunsuri la întrebare

Răspuns de miru23072006
2

Răspuns:

Mai jos ai o sursa verificata, succes!

#include <bits/stdc++.h>

using namespace std;

int ogl(int n)

{

   int ogl=0;

   while(n!=0)

   {

       ogl=ogl*10+n%10;

       n=n/10;

   }

   return ogl;

}

int main()

{

   int n,minim=1000000000,xmax=-1,x;

   cin >>n;

   for(int i=1;i<=n;i++)

   {

       cin>>x;

       if(abs(x-ogl(x))<minim)

       {

           minim=abs(x-ogl(x));

           xmax=x;

       }

       else if(abs(x-ogl(x))==minim)

       {

           if(x<xmax) xmax=x;

       }

   }

   cout<<xmax;

   return 0;

}


almond: da, am găsit și eu rezolvarea asta pe tutoriale-pe.net
almond: am nevoie de o rezolvare fără valoarea minima inițializare cu acea valoare
almond: initializata*
miru23072006: asta este solutia oficiala:
miru23072006: #include
#include

using namespace std;

int main()
{
int n , x , y , ogl, dmin = 1000000000, xmin;
for(cin >> n ; n ; n --)
{
cin >> x;
y = x;
ogl = 0;
while(y)
ogl = 10 * ogl + y % 10, y /= 10;

if(abs(x - ogl) < dmin)
dmin = abs(x - ogl), xmin = x;
else
if(abs(x - ogl) == dmin)
if(x < xmin)
xmin = x;
}
cout << xmin << "\n";
return 0;
}
miru23072006: o adaug ca raspuns acum
miru23072006: #include
#include

using namespace std;

int main()
{
int n , x , y , ogl, dmin = 1000000000, xmin;
for(cin >> n ; n ; n --)
{
cin >> x;
y = x;
ogl = 0;
while(y)
ogl = 10 * ogl + y % 10, y /= 10;

if(abs(x - ogl) < dmin)
dmin = abs(x - ogl), xmin = x;
else
if(abs(x - ogl) == dmin)
if(x < xmin)
xmin = x;
}
cout << xmin << "\n";
return 0;
}
miru23072006: asta e cea buna
Alte întrebări interesante