aula 143

Como descobrir se uma palavra é palíndroma com a linguagem C?

Nesta aula vamos fazer um programa para descobrir se uma palavra é palíndroma ou não com a linguagem de programação C.

Uma palavra é dita palíndroma quando possui o mesmo significado se lida da esquerda para a direita ou da direita para a esquerda.

Veja alguns exemplos de palavras palíndromas:
ama
osso
arara
radar
reviver

Lembre-se que estamos falando de um algoritmo para identificar uma palavra palíndroma. Há diversas formas possíveis e corretas para a elaboração desse algoritmo. Nos trechos de código abaixo são apresentadas duas versões diferentes.

Algoritmo para descobrir se uma palavra é palíndroma – versão 1

Na primeira versão a ideia desenvolvida é comparar os caracteres da string das bordas para o meio. Tomemos como exemplo a palavra “osso”. Comparamos a primeira letra com a última, são dois ós, Comparamos a segunda com a penúltima, são dois ss.

Para isso precisamos de duas variáveis contadoras, uma que inicia em zero e outra que inicia com tamanho da string – 1 e o objetivo é contar os caracteres diferentes.

Ao final do processo de comparação, se a quantidade de caracteres diferentes for igual a zero, então temos uma palavra palíndroma.

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

int main(){

    char palavra[30];
    int i, tam, diferentes = 0;

    printf("Digite uma palavra: ");
    scanf("%s", palavra);

    // ------- PRIMEIRA VERSÃO --------------------
    tam = strlen(palavra);
    tam--;// último índice válido da string (vetor)
    i = 0; // primeiro índice válido da string (vetor)

    while(tam >= i){
        if(palavra[i] != palavra[tam]) // conta as letras diferentes
            diferentes ++;
        i++;
        tam--;
    }

    if(diferentes == 0)
        printf("\nEh palindroma...\n");
    else
        printf("\nNao eh palindroma...\n");

    return 0;
}

Algoritmo para descobrir se uma palavra é palíndroma – versão 2

Esta segunda versão faz uso de uma estratégia diferente para obter o mesmo resultado, descobrir se uma palavra é palíndroma ou não.

O primeiro passo aqui é fazer uma cópia invertida da string que desejamos avaliar, invertendo os caracteres da string. Como exemplo imagine a palavra “amor”. A cópia invertida desta palavra é “roma”.

Agora que temos duas strings, precisamos apenas comparar e descobrir se são iguais. Isso pode ser feito com uma repetição, comparando cada caracter das strings, ou ainda usando a função strcmp que retorna zero se as duas strings forem iguais.

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

int main(){

    char palavra[30], copia[30];
    int i, tam, iguais = 0;

    printf("Digite uma palavra: ");
    scanf("%s", palavra);

    // ------- SEGUNDA VERSÃO --------------------
    tam = strlen(palavra);
    for(i = 0; i < strlen(palavra); i++){
        copia[i] = palavra[tam - 1];
        tam--;
    }

    copia[i] = '\0';
    tam = strlen(palavra);

    printf("Original: %s\nCopia: %s\n", palavra, copia);

    for(i = 0; i < tam; i++){
        if(palavra[i] == copia[i])
            iguais++;
    }

    if(tam == iguais)
        printf("\nEh palindroma...\n");
    else
        printf("\nNao eh palindroma...\n");

    return 0;
}


Este post tem um comentário

  1. Jaciele Santos Leal

    Quero aprender a programar em C

Deixe um comentário

12 + nove =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.