/* Largest palindrome product Problem 4 A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers. By:dbk */ #include #include using namespace std; #define MAX 10000 bool validPalindromic(int); bool validPalindromicApuntador(int); int main(int argc, char const *argv[]) { int a = 1; int b = 1; int c = 0; int res = 0; do { a = 1; do { c = a * b; res = (validPalindromicApuntador(c) && c > res) ? c : res; }while(a++ < MAX); }while(b++ < MAX); printf("Resultado final: %d\n", res); return 0; } bool validPalindromic(int valueCheck) { bool flagValid = true; char buffer[30]; int counterDsc = 0; int counterAsc = 0; int sizeStringNumber = 0; //Convierte el entero a una cadena sprintf(buffer, "%d", valueCheck); counterDsc = sizeStringNumber = strlen(buffer); while(sizeStringNumber > counterAsc) { flagValid &= (buffer[counterAsc++] == buffer[--counterDsc]) ? true : false; } return flagValid; } bool validPalindromicApuntador(int valueCheck) { char *ptrAsc; char *ptrDsc; char buffer[30]; bool flagValid = true; //Convierte el entero a una cadena sprintf(buffer, "%d", valueCheck); ptrAsc = buffer; ptrDsc = &buffer[strlen(buffer)]; while(ptrDsc >= ptrAsc) { flagValid &= (*(ptrAsc++) == *(--ptrDsc)); } return flagValid; } /* TEST DIR MEM Apuntadores printf("mem1:\t%p\n", ptrAsc); printf("mem2:\t%p\n", ptrDsc); */