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

Palíndromos - C++


PedroCunha

Pergunta

Irei postar um código que, ao receber uma palavra ou frase, mostra se essa é um palíndromo (Palavra que pode ser lida de trás para frente com o mesmo resultado) ou não. Qualquer dúvida basta perguntar.

#include <iostream>
#include <cstring>
#include <stdio.h>

using namespace std;

string Palavra = "";
string Palavra_Teste = "";
string TempPalavra = "";
bool Se_Palindromo = false;
char Usar_denovo;

void Perguntar_a_Palavra(string&);
void Checar_por_simbolos(string&, string&);
bool Checar_se_Palindromo(string&, string);
void Mostrar_se_e_Palindromo();
void Perguntar_se_quer_usar_denovo(char);
void Funcoes();

void Perguntar_a_Palavra(string& Palavra)
{
    Palavra == "";
    cin.sync();
    cout << "\nDigite uma palavra (Não use acentos por favor)" << endl;
    getline(cin, Palavra);
}

void Checar_por_simbolos(string& Palavra, string& TempPalavra)
{
    TempPalavra = Palavra;
    for (unsigned int h = 0; h < Palavra.length(); h++)
    {
    for (unsigned int i = 0; i < Palavra.length(); i++)
    {
        if (Palavra[i] >= 48 || Palavra[i] == 49 || Palavra[i] == 50 || Palavra[i] == 51 || Palavra[i] == 52 || Palavra[i] == 53 || Palavra[i] == 54 ||
Palavra[i] == 55 || Palavra[i] == 56 || Palavra[i] == 57 || (Palavra[i] > 64 && Palavra[i] < 91) || (Palavra[i] > 96 && Palavra[i] < 123) ||
(Palavra[i] > 127 && Palavra[i] < 155) || (Palavra[i] > 159 && Palavra[i] < 166))
        {
        }
        else
        {
            Palavra.erase(i,1);
        }
    }
    }
    for (unsigned int j = 0; j < Palavra.length(); j++)
    {
        Palavra[j] = toupper(Palavra[j]);
    }
}

bool Checar_se_Palindromo(string& Palavra, string Palavra_Teste)
{
     int i, j;
    int Palavra_Size = Palavra.length();
    if (Palavra != "")
    {
        for (i = Palavra_Size - 1, j = 0; i >= 0;i-- , j++)
    {
        Palavra_Teste[j] = Palavra[i];
    }

        Palavra_Teste[Palavra_Size] = '';





    if (strcmp(Palavra_Teste.c_str(), Palavra.c_str()) == 0)
    {
    Se_Palindromo = true;
    }
    else
    Se_Palindromo = false;

    Palavra = TempPalavra;

    }

    else
    Se_Palindromo = false;

    return Se_Palindromo;
}

void Mostrar_se_e_Palindromo()
{
        cout << "\n";

    cout << "Frase: " << Palavra << endl;
    cout << "Palíndromo:";
    if (Se_Palindromo == false)
        {
          cout <<  " Não" << endl << endl;
        }
    else
    {
          cout << " Sim" << endl << endl;
    }
}

void Funcoes()
{
    Perguntar_a_Palavra(Palavra);
    Checar_por_simbolos(Palavra, TempPalavra);
    Checar_se_Palindromo(Palavra, Palavra_Teste);
    Mostrar_se_e_Palindromo();
    Perguntar_se_quer_usar_denovo(Usar_denovo);
}

void Perguntar_se_quer_usar_denovo(char Usar_denovo)
{
    cout << "\nDeseja usar o programa denovo? (S / N)" << endl;
    if (! (cin >> Usar_denovo))
    {
        cin.clear();
        cin.sync();
        cout << "Opção inválida." << endl << endl;
        Perguntar_se_quer_usar_denovo(Usar_denovo);
    }
    switch (Usar_denovo)
    {
    case 'S': {Funcoes(); break;}
    case 's': {Funcoes(); break;}
    case 'N': {cout << "\nAdeus" << endl; break;}
    case 'n': {cout << "\nAdeus" << endl; break;}
    default:{ cout << "Opção inválida. Tente novamente." << endl;
    cin.sync();
    Perguntar_se_quer_usar_denovo(Usar_denovo);
    break;
    }
    }

}
int main()
{
    setlocale(LC_ALL, "Portuguese");

    Funcoes();


    cin.get();
    return 0;
}

Att.,

Pedro

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,2k
    • Posts
      652,1k
×
×
  • Criar Novo...