sexta-feira, 14 de agosto de 2015

Verificando Palíndrome

Palíndromo é uma palavra, expressão ou frase, ou até mesmo uma sequência de letras ou números, que tenha a propriedade de ser lida e compreendida da mesma maneira, tanto da direita para a esquerda, como da esquerda para a direita.
Nele são considerados, somente palavras e letras, e desconsiderados os sinais e espaços.
Se quizer saber mais sobre o assunto acesse o seguinte link abaixo:
http://www.infoescola.com/linguistica/palindromos/
Baseado nestas informações ficou muito fácil implantar um recurso
que mostra se uma palavra é Polídromo ou não em linguagem C.
Breve descrição do funcionamento:
A palavra recebida pela entrada de dados, é opcionalmente convertida para minúscula, e é copiada na matriz de string char pal [ TAM ]; e em seguida,
é imediatamente invertida arranjadamente dentro de um laçõ for.
A função strstr(...,...); faz a comparação da palavra original com a mesma palavra porém invertida, e não sendo a mesma tá claro que o informado, é: "Não é Palindrome".
Confirmando que a palavra  é a mesma dirá com certeza que é palíndrome.
Existem diversas maneiras de se fazer isto, más achei que este método é muito simples de se entender, e o programa é totalmente indicado a iniciantes em linguagem C.

Veja abaixo imagens do programa em execução:






Veja abaixo o código do programa:

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define TAM 20
void Janela5 ( ) {
     int lin, col;
     col = 0;
     for ( lin = 2; lin <= 24 ; lin++ )
         for ( col = 2; col <= 78 ; col++ ) {
              gotoxy ( col , lin );
              textbackground ( LIGHTGRAY );
              printf ( " " );
         }
}
int continuando ( ) {
     int nr;
     do {
         system ( "cls" );
         system ( "Color 90" );
         Janela5 ( );
         textcolor ( LIGHTRED );
         gotoxy ( 32 , 5 );
         printf ( "VERIFICANDO PALÍNDROME" );
         textcolor ( BROWN );
         gotoxy ( 25 , 7 );
         printf ( "Programa desenvolvido por:" );
         textcolor ( WHITE );
         gotoxy ( 52 , 7 );
         printf ( "Samuel Lima" );
         textcolor ( BLACK );
         gotoxy ( 34 , 9 );
         printf ( "sa_sp10@hotmail.com" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 23 , 11 );
         printf ( "Digite " );
         textcolor ( LIGHTRED );
         printf ( " 0 " );
         textcolor ( LIGHTBLUE );
         printf ( " para sair ou " );
         textcolor ( LIGHTRED );
         printf ( " 1 " );
         textcolor ( LIGHTBLUE );
         printf ( " para continuar " );
         textcolor ( LIGHTRED );
         gotoxy ( 24 , 13 );
         scanf ( "%d" , &nr );
         fflush ( stdin );
         if ( nr == 0 ) {
              textcolor ( LIGHTRED );
              gotoxy ( 36 , 18 );
              printf ( "MUITO OBRIGADO" );
              getche ( );
              exit ( 0 );
         } else if ( nr == 1 ) {
              return 1;
         }
         textcolor ( BLACK );
         gotoxy ( 36 , 16 );
         printf ( "\aopcão errada!" );
         getche ( );
     } while ( 1 );
     return 1;
}
int main ( ) {
     system ( "title VERIFICANDO PALÍNDROME" );
     continuando ( );
     char str [ TAM ];
     char pal [ TAM ];
     int a = 0, c, i, j;
     system ( "cls" );
     system ( "Color 90" );
     Janela5 ( );
     textcolor ( LIGHTRED );
     gotoxy ( 32 , 5 );
     printf ( "VERIFICANDO PALÍNDROME" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 32 , 7 );
     printf ( "Digite uma Palavra: " );
     textcolor ( BLACK );
     gets ( str );
     textcolor ( LIGHTBLUE );
     gotoxy ( 32 , 9 );
     printf ( "Palavra digitada ==> " );
     textcolor ( BLACK );
     printf ( "%s" , str );
     strlwr ( str );
     strcpy ( pal , str );
     getche ( );
     for ( i = 0, j = strlen ( str ) - 1; i < j ; i++, j-- ) {
         c = str [ i ];
         str [ i ] = str [ j ];
         str [ j ] = c;
     }
     if ( strstr ( str , pal ) != NULL ) {
         textcolor ( LIGHTBLUE );
         gotoxy ( 32 , 11 );
         printf ( "É Palíndrome ==> " );
         textcolor ( BLACK );
         printf ( "%s" , str );
         a = 1;
     } else {
         textcolor ( LIGHTBLUE );
         gotoxy ( 32 , 11 );
         printf ( "Não é Palíndrome ==> " );
         textcolor ( BLACK );
         printf ( "%s" , str );
     }
     Sleep ( 1000 );
     textcolor ( LIGHTRED );
     gotoxy ( 35 , 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.