Da,va multumesc. Mi-a dat seama unde am gresit si voi tine cont de sfaturi 
Acum, dacă ai înțeles de ce porniseși pe o cale greșită să vedem cum se rezolva totuși problema pe calea pe care porniseși:
#include <iostream>
using namespace std;
int main()
{
int i,inv,aux;
for (i = 10000;i <= 99999;i++) {
aux = i;
inv=0;
while (aux > 0) {
inv = inv*10+aux%10;
aux = aux/10;
}
if (inv == i) cout << i << endl;
}
return 0;
}
Sau într-un stil mai apropiat de C/C++
#include <iostream>
using namespace std;
int main()
{
int i,inv,aux;
for (i = 10000;i <= 99999;i++) {
for(aux=i, inv=0; aux>0; aux/=10)inv=inv*10+aux%10;
if (inv == i) cout << i << endl;
}
return 0;
}
Dar pentru a vedea totuși diferența de performanță între ultimele două variante și celelalte doua anterioare avem:
pentru prima variantă, din mesajul anterior:
[tavy@tavy ~]$ time ./palindrom >/dev/null
real 0m0.004s
user 0m0.002s
sys 0m0.002s
pentru ultima variantă din mesajul curent:
[tavy@tavy ~]$ time ./palindrom >/dev/null
real 0m0.014s
user 0m0.010s
sys 0m0.003s
Se observă diferența de timp, 4ms varianta optimizată versus 14ms varianta neoptimizată. Trebuie remarcat că din timpul acesta 2ms respectiv 3ms sunt ocupate de sistem pentru încărcare librării, scriere, etc. timpul pentru calculul propriu zis este de 2ms respectiv 10ms, deci diferența este chiar mare, programul care verifică fiecare număr durează de cinci ori mai mult.
În cazul acesta nu este o problemă timpul pentru că oricum pentru noi pare instantaneu dar gândește-te că ai un program care optimizat durează 10s, cum ar fi să dureze 50s?