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

se citesc n numere naturale de la tastatura .Sa se afișeze numerele care sunt palindrom (un număr este palindrom dacă este egal cu inversul sau ) și care astfel de numere exista .Dacă nu exista niciun număr se va afișa mesajul :Nu exista ne palindrom in șir
Va rogg pana luni !!!

Răspunsuri la întrebare

Răspuns de Apollyon
1

Răspuns:

#include <iostream>

int aflaInversul(int numar);

int main() {

 int vectorNumere[50], cateNumere;

 std::cout << "Cate numere vrei sa introduci ? >> ";

 std::cin >> cateNumere;

/* citim numerele în vector */

 for (int i = 0; i < cateNumere; i++) {

   std::cout << "Introdu un numar >> ";

   std::cin >> vectorNumere[i];

 }

 /* pornim cu premiza că nu există palindroame */

 bool macarUnPalindrom = false;

 for (int i = 0; i < cateNumere; i++) {

   int numarCurent = vectorNumere[i];

  /* calculăm inversul numărului curent */

   int inversulNumarului = aflaInversul(numarCurent);

  /* dacă numărul curent este palindrom */

   if (numarCurent == inversulNumarului ) {

     /* setăm că există măcar un palindrom și-l afișăm */

     if (macarUnPalindrom == false) {

         macarUnPalindrom = true;

     }

     std::cout << inversulNumarului << " ";

   }

 }

 /* dacă în vector nu a fost găsit niciun palindrom afișăm că nu există palindroame */

 if (macarUnPalindrom == false) {

   std::cout << "Nu exista palindrom in sir!\n";

 }

 return 0;

}

int aflaInversul(int numar) {

 /* calculăm inversul numărului, de exemplu pentru 124 */

 int inversulNumarului = 0;

 /* intrăm în while deoarece 124 e diferit de 0 */

 while (numar != 0) {

   /* (prima iterație) extragem ultima cifră care e 4 */

   /* (a doua iterație) extragem ultima cifră care e 2 */

   /* (a treia iterație) extragem ultima cifră care e 1 */

   /* după a treia iterație se oprește deoarece număr este 0 */

   int ultimaCifra = numar % 10;

   /* (prima iterație) inversulNumarului = 0 * 10 + 4 = 0 + 4 = 4 */

   /* (a doua iterație) inversulNumarului = 4 * 10 + 2 = 40 + 2 = 42 */

   /* (a doua iterație) inversulNumarului = 42 * 10 + 1 = 420 + 1 = 421 */

   inversulNumarului = inversulNumarului * 10 + ultimaCifra;

   /* (prima iterație) numar = 124 / 10 = 12,4 = 12 */

   /* (a doua iterație) numar = 12 / 10 = 1,2 = 1 */

   /* (a treia iterație) numar = 1 / 10 = 0,1 = 0 */

   numar /= 10;

 }

 /* și returnăm inversul calculat */

 return inversulNumarului;

}

Alte întrebări interesante