aboutsummaryrefslogtreecommitdiff
path: root/challenge-288/ulrich-rieke/cpp/ch-1.cpp
blob: 4551c7edcab608a9a4584727a0cdb85bcada5c39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
#include <algorithm>
#include <cstdlib>

bool isPalindrome( int number ) {
   auto numberstring = std::to_string( number ) ;
   auto reversed { numberstring } ;
   std::reverse( reversed.begin( ) , reversed.end( ) ) ;
   return reversed == numberstring ;
}

int main( ) {
   std::cout << "Please enter a number!\n" ;
   int number ;
   std::cin >> number ;
   int current = number - 1 ;
   while ( ! isPalindrome( current ) )  
      current-- ;
   auto minusnum = current ;
   auto minusdiff = std::abs( minusnum - number ) ;
   current = number + 1 ;
   while ( ! isPalindrome( current ) ) 
      current++ ;
   auto plusnum = current ;
   auto plusdiff = std::abs( plusnum - number ) ;
   if ( plusdiff == minusdiff ) 
      std::cout << minusnum << '\n' ;
   else {
      if ( plusdiff < minusdiff )  
	 std::cout << plusnum << '\n' ;
      else 
	 std::cout << minusnum << '\n' ;
   }
   return 0 ;
}