Răspuns :
Explicație:
#include <iostream>
using namespace std;
int main()
{
int n, sir[100];//declaram n si un sir de numare de tip vector
cout<<"n este ";
cin>>n;//citim n
for(int i=0;i<n;i++)
{
cout<<"elementul "<<i<<" din sir este ";
cin>>sir[i];//citim elementele sirului
}
int x,p,c,z,ogl,y,k,a;//declaram variabilele ce le vom folosi mai departe
k=0;//k reprezinta numarul numerelor care au numarul par asociat palindrom, pe care il initializam cu 0
a=0//initializam cu 0 numarul de numere care au numar par asociat
for(int i=0;i<n;i++)//parcurgem vectorul (sirul)
{
x=sir[i];//trecem, pe rand, fiecare valoare din sir intr-o noua variabila pentru a nu-i pierde valoarea
z=0;//initializam cu 0 numarul de cifre pare
p=0;//initializam cu 0 numarul par asociat pe care il vom construi mai jos
while(x!=0)//repetam instructiunile de mai jos cat timp x nu este 0
{
c=x%10;//determinam ultima cifra a lui x
if(c%2==0)//testam daca ultima cifra este para si in caz afirmativ, executam blocul de intructiuni de mai jos (cele 2 instructiuni din if)
{
p=p*10+c;//construim numarul p (acesta la iesirea definitiva din while va fi oglinditul numarului par asociat)
z++;//numaram cate cifre pare are numarul x
}
x=x/10;//x devine catul (nu restul) impartirii lui x la 10 pentru a vedea radicalul ramas dupa folosirea ultimei cifre (!!!! intructiunea se executa chiar daca valoarea lui if este negativa, deoarece aceasta nu face parte din if !!!!)
}
ogl=0;//initializam cu 0 oglinditul numarului par asociat
y=p;//trecem numarul construit mai sus intr-o noua variabila pentru a nu-i pierde valoarea
if(z!=0)//testam daca numarul are cifre pare si in caz afirmativ executam while, altfel trecem mai departe
while(y!=0)//repetam instructiunile de mai jos cat timp y nu este 0
{
ogl=ogl*10+y%10;//construim oglinditul lui p
y=y/10;x devine catul (nu restul) impartirii lui y la 10 pentru a vedea radicalul ramas dupa folosirea ultimei cifre
}
if(z==0)//testam daca numarul are sau nu cifre pare
cout<<"numarul "<<sir[i]<<" de pe pozitia "<<i<<" are toate cifrele impare si nu are numar par asociat"<<endl;//daca z este 0 atunci executam aceasta intructiune si spunem ca numarul este impar
else//altfel, in cazul in care z nu este 0
{
cout<<"numarul par asociat numarului <<sir[i]<<" de pe pozitia "<<i<<" din sir este "<<ogl<<endl;//afisam numarul par asociat
a++//numarul de numere care au numar par asociat creste
}
if(p==ogl && z!=0)//testam daca numarul par asociat este sau nu palindrom
k++;//in caz afirmativ, k creste cu o unitate
}
if(a!=0)//testam daca exista numere care au numar par asociat
cout<<"numarul numerelor din sir care au numarul par asociat palindrom este "<<k;//afisam k in caz afirmativ
else//altfel
cout<<"niciun numar nu are numar par asociat";//mesaj scris in caz negativ
return 0;
}