itoa
. Oppure fare un ciclo in cui leggi una cifra per volta.reverse
che rovescia una lista. Però penso che in C una cosa del genere debba passare per i puntatori std::vector
, quindi se ti è ammessa li puoi evitare.std::vector<int> ns_b(const & int base, const & int n) {
// codice ricorsivo
}
std::vector<int> reverse(const & std::vect<int> v) {
// roba
}
bool palindrome (const & int base, const & int n) {
return ns_b(base, n) == reverse(ns_b(base, n));
}
==
per vedere se due std::vect<int>
sono uguali è lecito). Se vuoi, ignora i const &
.Alex7337 ha scritto:Salve ragazzi vorrei sapere come posso convertire una varibile int, per esempio int = 121 in un vettore in modo tale da poter verificare se è palindroma o meno.
Alex7337 ha scritto:Poi volevo sapere se effettivamente esistono alternative al metodo prima citato. Grazie.
#include <iostream>
#include <string>
#include <algorithm>
bool test_palindromo( int num )
{
const auto number = std::to_string( num );
return std::equal( number.begin( ), number.begin( ) + (number.size( )/ 2), number.rbegin( ) );
}
bool is_palindrome_noarray(unsigned value)
{
unsigned reversed = 0;
unsigned v = value;
while (v > 0) {
reversed = reversed * 10 + (v % 10);
v /= 10;
}
return value == reversed;
}
bool is_palindrome_array(unsigned value)
{
int digits[20];
int ndigits = 0;
while (value > 0) {
digits[ndigits++] = value % 10;
value /= 10;
}
for (int i = 0, j = ndigits-1; i < j; ++i, --j) {
if (digits[i] != digits[j]) {
return false;
}
}
return true;
}
#include <stdint.h>
#include <iostream>
bool
is_palindrome( uint32_t value )
{
uint32_t reversed = 0;
uint32_t v = value;
while ( v > 9 )
{
reversed = reversed * 10 + ( v % 10 );
v /= 10;
}
return ( value / 10 ) == reversed;
}
int
main( )
{
std::cout << std::boolalpha << is_palindrome( 121 ) << " " << is_palindrome( 123456 ) << " "
<< is_palindrome( 4294967295 ) << " " << is_palindrome( 4294884924 ) << " "
<< is_palindrome( 4 ) << " " << is_palindrome( 4294884925 ) << " "
<< is_palindrome( 3294884924 ) << std::endl;
}
Visitano il forum: Nessuno e 1 ospite