Ir para conteúdo
Fórum Script Brasil
  • 0

[Programa em C] Erro na função para determinar se um número é palíndromo


lucasi

Pergunta

#include <stdio.h>

int palindromo (int num){

/*Essa função acha o reverso do número e o retorna para a função principal*/
    int rev;
    while(num){
        rev = (num%10 + rev)*10;
        num = num/10;
    }
    return (rev);
}

int main (void){

/*Na função main, o valor é inserido pelo usuário e o programa chama a função palindromo para determinar seu reverso. Depois a função main compara se o reverso é igual ao numero e se isso for verdade retorna se ele é palindromo.*/
    int pal,num;
    printf("Informe um valor: ");
    scanf("%d",&num);
    //printf("%d",num);
    pal = palindromo(num)/10;
    if (pal==num)
        printf("O numero %d é palindromo!!",pal);
    else 
        printf("O numero %d não é palindromo!!",pal);
return 0;
system ("pause");
}

O que está em negrito é a adaptação que eu tive que fazer. Se executado o código, sem atribuir a função palíndromo dividido por 10 à uma variável, o alor retornado da função possuía sempre uma casa decimal a mais, ou seja, se o usuário digita 121 retornaria que o valor 1210 não é palíndromo. Gostaria da ajuda do pessoal para saber porque o número está retornando multiplicado por 10 e não em seu valor correto.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Sua função não verifica se é palíndromo, apenas gera o número invertido (com um zero a mais), então ou muda o nome da função para "reverso" ou muda a lógica dela pra verificar se é palíndromo...

int palindromo (int num){
    int rev = 0, cnum = num;
    while (num){
        //O erro de colocar 0 a mais estava nessa linha
        //multiplicando tudo por 10, ao invés de apenas rev
        rev = num % 10 + rev * 10;
        num /= 10;
    }
    if (cnum == rev)
        return -1; // Valor != de 0 é VERDADEIRO
    else
        return 0; // 0 = FALSO
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...