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:
#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;
}