Verificando se uma palavra é um palíndromo em linguagem C
Como verificar se uma palavra é um palíndromo em linguagem C
Neste tutorial de linguagem C vamos criar um pequeno programa que permite verificar se uma dada palavra, fornecida pelo usuário, é um palíndromo.
De acordo com a Wikipedia:
Um palíndromo é uma palavra, frase ou qualquer outra sequência de caracteres que tenha a propriedade de poder ser lida (de forma igual) tanto da direita para a esquerda como da esquerda para a direita. Num palíndromo, normalmente são desconsiderados os sinais ortográficos (diacríticos ou de pontuação), assim como o espaços entre palavras.
Ou seja, qualquer sequência de caracteres que seja a mesma se lida da esquerda para a direita ou da direita para a esquerda. Por exemplo, a palavra “osso” é um palíndromo, pois é idêntica não importa o sentido da leitura.
Para este algoritmo vamos fazer uso de algumas funções de manipulação de strings e importar bibliotecas específicas, como string.h e ctype.h. Vamos ao código.
Código
#include<stdio.h> #include<string.h> #include<locale.h> #include <ctype.h> int main() { setlocale(LC_ALL, ""); int i, valor = 0; char palavra[15], inversa[15]; printf("\nDigite uma palavra: "); gets(palavra); //Converter a palavra digitada para minúsculas for(i = 0; palavra[i]; i++){ palavra[i] = tolower(palavra[i]); } //Copiar a palavra digitada para que seja invertida strcpy(inversa, palavra); //Inverter a palavra copiada strrev(inversa); valor = strcmp(palavra, inversa); if (valor == 0) printf("\nA palavra %s é palíndroma\n", palavra); else printf("\nA palavra %s não é palíndroma\n", palavra); return 0; }
Crie um novo projeto em C e digite ou copie e cole o código anterior. Compile e execute o programa, fornecendo uma palavra como solicitado no console, e o programa retornará uma mensagem dizendo se a palavra é um palíndromo ou não, como ilustra a figura a seguir:
No meu exemplo, entre com a palavra “Mussum”, e o programa retornou a mensagem de que esta palavra é um palíndromo.
A seguir, vamos explicar sucintamente o funcionamento do código, assim como das funções empregadas em sua construção.
Funcionamento
- Cabeçalho string.h – A biblioteca string.h implementa um conjunto simples de funções para manipulação de strings, como funções para comparação e cópia de strings, entre outras. As funções strcpy e strcmp pertencem a esse cabeçalho.
- Cabeçalho ctype.h – O arquivo de cabeçalho ctrype.h implementa diversas funções úteis para manipulação de caracteres, como por exemplo funções para verificar se um caractere é ASCII ou para realizar conversões de maiúsculas para minúsculas e vice-versa. A função tolower pertence a essa biblioteca, assim como muitas outras (toupper, isalpha, isdigit, isspace, etc.).
- Função gets() – Lê a palavra digitada pelo usuário e a armazena na variável palavra.
- Função strcpy() – A função strcpy permite copiar uma string, usando a sintaxe strcpy(destino, origem). Em C, não podemos simplesmente atribuir o conteúdo de uma variável string a outra variável diretamente – devemos usar funções para tal.
- Função strrev() – A função strrev inverte uma string fornecida, de acordo com a sintaxe: strrev(variável_string).
- Função strcmp() – A função strcmp é usada para comparar duas strings e verificar se são iguais. Sua sintaxe é strcmp(str1, str2). Se ambas as strings forem iguais, um valor zero é retornado.
- Função tolower() – A função tolower permite converter caracteres em caixa alta para caixa baixa (minúsculas). Sua função inversa é a toupper.
Também é possível implementar esse programa sem a necessidade de usar a função strrev(), que não é padrão nas bibliotecas da linguagem C – em algumas implementações, ela pode não estar presente.
Nesse caso temos de criar nossa própria função para reversão da string, o que faremos na próxima lição.
Próximo: Criando função para inverter string e conferindo palíndromo em linguagem C
muito bom o conteudo, me ajudou demais a estudar em Estrutura de Dados
Valeu Miguel!