/*
 * Problema extra.  Um string (isto é, uma cadeia de caracteres) é um
 * palíndromo se lido da direita para a esquerda ou da esquerda para a
 * direita ele é o mesmo string.  Um inteiro N é um palíndromo se sua
 * representação na base 10 é um palíndromo.  Exemplos: 
 * 
 * 567765 e 32423 são palíndromos
 * 567675 não é palíndromo
 * "Socorram-me subi no ônibus em Marrocos" (ignorando espaços, acentos, maiúsculas/minúsculas)
 * "Oto come doce seco de mocotó"
 * "A diva em Argel alegra-me a vida"
 * 
 * Escreva uma função que recebe um inteiro N > 0 e devolve seu
 * primeiro dígito, seu último dígito e altera o valor de N removendo
 * seu primeiro e último dígitos.  Exemplos:
 * 
 *     N  1o. dígito   último dígito   novo N
 *   732           7               2        3
 * 14738           1               8      473
 *  1010           1               0        1
 *    78           7               8        0 
 *     7           7               7        0
 * 
 * Escreva um programa que recebe um inteiro positivo N e verifica se
 * N é palíndromo.  Suponha que N não contenha o dígito 0. 
 */

#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

void verifique_extremos(int *N, int *p, int *q);
int eh_palindromo(int N);

int main(int argc, char *argv[])
{
  int N = atoi(argv[1]);

  if (eh_palindromo(N))
    printf("%d 'e palindromo\n", N);
  else
    printf("%d nao 'e palindromo\n", N);
      
  return 0;
}

int eh_palindromo(int N)
{
  while (N > 9) {
    int a, b;
    verifique_extremos(&N, &a, &b);
    if (a != b)
      return FALSE;
  }
  return TRUE;  
}

void verifique_extremos(int *N, int *p, int *q)
{
  long = 1;

  while (l <= *N) l *= 10;
  l /= 10;

  *p = *N / l;
  *q = *N % 10;

  *N %= l;
  *N /= 10;
}
