RESOLUÇÃO EM C
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void main (){
char cadeia[100], nova[100];
int cmp;
printf("\nDigite uma string: ");
gets(cadeia);
strcpy(nova,cadeia);
strrev(cadeia); // FUNÇÃO QUE INVERTE CADEIA DE CARACTER
cmp = strcmp(cadeia, nova);
if ( cmp == 0){
printf("A palavra constitui um palindromo.\n");
} else{
printf("A palavra não constitui um palindromo.\n");
}system("pause");
}
Para a resolução deste problema usamos os operadores Div (Retorna valor da divisão) e Mod (Retorna o resto da divisão) e vamos operando com o divisor de valor 10, assim pegamos o ultimo digito do numero digitado, logo após nós aplicamos a operação de Mod e guardamos o valor obtido. O valor obtido (lembrando que é o resto da divisão) é soma a multiplicação por 10 (que foi nosso divisor) a variável invertido (que vai guardar nosso número invertido) a cada digito obtido.
Para condição de parada, a cada digito processado aplicamos a operação de Div (que retorna o valor da divisão) a fim de obtermos o valor zero, pois assim sabemos que não há mais dígitos para verificar.
Por fim comparamos o valor inicial com o resultado obtido desta operação sucessiva de Mod e Div, se os mesmos forem iguais, temos um número palíndromo.
programa {
funcao inicio () {
//Declaração de variaveis
/*
* digitado -> esta variável é para capturar o valor digitado
* num -> é uma variável para copiar o valor digitado e não mudar o valor capturado
* invertido -> recebe o valor das operações de div e mod para posterior verificação
* dígito -> armazena o resto da divisão pela operação de mod
*/
inteiro digitado, num, invertido, digito
escreva("Digite um número inteiro: ")
//Captura o valor digitado
leia(digitado)
//Copio para a variável de operação
num = digitado
//Inicializo a variável invertido
invertido = 0
//Rodo um laço até o num chegar a 0 (zero)
enquanto (num != 0) {
/*
* Pego o resto da divisão por 10
* utilizando o operador MOD (%)
*/
digito = num % 10
/*
* multiplico o que ja foi invertido por 10 e adiciono o resto
* ao final esse será o valor invertido
*/
invertido = (invertido * 10) + digito
/*
* Divido por 10 o valor restante para eliminar o dígito calculado anteriormente
* Também vai ser minha variável de controle, quando este zerar, acabou os
* dígitos
*/
num = num / 10
}
//Comparo o digitado com o invertido
se (digitado == invertido) {
//Se forem iguais digo que é palíndromo
escreva("Este é um número palíndromo.")
} senao {
//Senão digo que não é palíndromo
escreva("Este não é um número palíndromo.")
}
}
}
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar