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

Se consideră subprogramul pal, care primeşte prin intermediul primului parametru, a, un număr natural, cu minimum 2 cifre şi maximum 8 cifre, şi furnizează prin intermediul celui de-al doilea parametru, b, cel mai apropiat număr de valoarea lui a, care este palindrom. În cazul în care există 2 astfel de numere, subprogramul va returna numărul mai mic.
Exemplu: dacă a=16, atunci valoarea returnată este 11; dacă a=128, valoarea returnată este 121, iar dacă a=33, atunci se returnează 33.
Scrieţi definitia completă a subprogramului pal.


ElenaGr: C++
boiustef: e de pe pbinfo?
Paddon: Dacă a = 128, n-ar trebui să returneze 131?
ElenaGr: Este din cele 100 de variante din 2009
ElenaGr: Da, 131, cred că e o greseală de scriere.

Răspunsuri la întrebare

Răspuns de Paddon
1

bool este_palindrom(int n)

{

   int v[8] = {0};

   int i = n, k = 0;

   while(i)

   {

       v[k] = i % 10;

       i /= 10;

       k++;

   }

   i = 0;

   while(i <= k / 2)

   {

       if(v[i] != v[k - i - 1])

           return false;

       i++;

   }

   return true;

}

void pal(int a, int& b)

{

   int v[8] = {-1}, i;

   i = 0;

   while(true)

   {

       if(este_palindrom(a - i))

       {

           b = a - i;

           return;

       }

       else if(este_palindrom(a + i))

       {

           b = a + i;

           return;

       }

       i++;

   }

}


ElenaGr: da eroarea stray \240 in program la int v[8]
ElenaGr: ok, a fost greseala mea
Alte întrebări interesante