Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

quel

palindromo

Recommended Posts

Ola Pessoalto com uma duvida nesse exercicio aquiFaça um programa que leia uma palavra e verifique se a palavra é um palindromocomo eu faço esse programa, alguem pode me ajudar??? Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um palíndromo é uma palavra, frase ou qualquer outra sequência de unidades que tenha a propriedade de poder ser lida tanto da direita para a esquerda como da esquerda para a direita.Exs.: 12321 - 51015 - ovo - ama - osso - mirim... e por aí vai.Utilize vetor de caracteres. Por exemplo: Ler uma string de até 5 caracteres. Para isso você teria que comparar a primeira posição com a última e a segunda com a quarta. Fazer isso em C/C++, Java é moleza. Já responderam isso no seu outro post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o pior é que o professor passou esse exercicio e nem ensinou nada de vetor,tipo ele ainda ta no basico como eu coloco o vetor?Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara ja que você nao conhecer o conceito de Pilha...Joga tudo em uma matriz e compara de 0 a n para n a 0, já era...Pega uma apostila de C por exemplo e você já conseguirá fazer...Vou implementar um exemplo em C e te mostro em breve...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta ai! Codigo em C que verifica se é Palindromo...

 

 

 

char palavra[50],inversa[50];int i,j,palindromo;palindromo="0";main(){	   printf("Informe uma palavra: ");	   scanf("%s",&palavra);j=strlen(palavra)-1;for (i=0;i<strlen(palavra);i++){	inversa[j]=palavra[i];	j--;	}for (i=0,j=0;i<strlen(palavra);i++,j++){	if (palavra[i]!=inversa[j])	   palindromo="0";	else	   palindromo="1";}if (palindromo=="1")   printf("\nEh um Palindromo");else   printf("\nNao um Palindromo");   printf("\n\n");system("pause");}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este código está com diversos problemas :/

int i,j,palindromo;palindromo="0";
Inteiros não utilizam aspas.
for (i=0,j=0;i<strlen(palavra);i++,j++){	if (palavra[i]!=inversa[j])	   palindromo="0";	else	   palindromo="1";}
Este problema é sério porque é a lógica inteira do programa.Neste caso aqui, se a palvra começar e terminar com a mesma letra ele dirá que é um palíndromo.A solução seria dar um break quando encontrasse alguma diferença. Para logo parar de comparar.
if (palindromo=="1")   printf("\nEh um Palindromo");else   printf("\nNao um Palindromo");
A comparação está errada denovo :/

Ola Pessoalto com uma duvida nesse exercicio aquiFaça um programa que leia uma palavra e verifique se a palavra é um palindromocomo eu faço esse programa, alguem pode me ajudar???Obrigada

Faça uma busca aqui no fórum que você vai encontrar diversas soluções para este problema. Todo início de semestre tem alguém com um problema semelhante aqui no fórum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto!!! revi o codigo e aqui esta um novo código sem aspas malignas... E agora skimo-solar ainda existem erros?

 

 

char palavra[50],inversa[50];int i,j;main(){	   printf("Informe uma palavra: ");	   scanf("%s",&palavra);j=strlen(palavra)-1;for (i=0;i<strlen(palavra);i++){	inversa[j--]=palavra[i];	}for (i=0,j=0;i<strlen(palavra);i++,j++){	if (palavra[i]!=inversa[j]){	   printf("\nNao eh um Palindromo");	   break;	   }	else{	   printf("\nEh um Palindromo");	   break;	}}printf("\n\n");system("pause");}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continua errado... o problema é LÓGICA.

 

Experimente colocar a entrada: 'abca'

 

Ele vai informar que é um palíndromo, sendo que não é uma verdade.

Seu programa só compara a primeira e última letra. Leia meu post anterior e você vai ver a solução :)

 

 

 

 

Obs: Ao invés de ficar levando para o lado pessoal tente aprender com seus erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que lado pessoa bixo, desce desse balão o pessoal nem veio hj...

 

char palavra[50],inversa[50];int i,j;main(){	   printf("Informe uma palavra: ");	   scanf("%s",&palavra);j=strlen(palavra)-1;for (i=0;i<strlen(palavra);i++){	inversa[j--]=palavra[i];	}for (i=0,j=0;i<strlen(palavra);i++,j++){	if (palavra[i]!=inversa[j]){	   printf("\nNao eh um Palindromo\n\n");	   system("pause");	   return 0;	   }}printf("\nEh um Palindromo");printf("\n\n");system("pause");}

O seu código é mais eficiente, mas se ele entregar o seu para o professor, acho que o professor vai encrespar dzd que não foi ele quem fez, se o professor conhecer a sala vai saber que a mina nao manjava... muito... que se acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Robex eu tenho que fazer em pascal e o professor nao ensinou nada de vetor nem matriz, ele esta ensinando o basicoObrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas Quel, sem vetor não tem como fazer...Só se seu professor aceitar que seja informado letra por letra...letra1=aletra2=nletra3=aDepois seria comparadose letra1=letra3...Algo assim...Não é melhor você conversar com seu professor e perguntar se será usado vetor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu só estava corrigindo o código."Pior que aluno ruim, é professor ruim."Mas o cara não gosta de ser corrigido, prefere continuar errado.Não sabe que ele pode aprender mais assim. :)Sem mais, último desabafo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include<string.h>

#include<stdio.h>

#include<stdlib.h>

 

int main( void )

{

//DECLARACAO DAS VARIAVEIS

char nome[40];

int i,x,acertos;

 

//CAPTURO A PALAVRA LETRA E OU NUMEROS

printf("Entre com uma palavra ");

scanf("%s", nome); getchar();

 

//VARRO O VETOR DE TRAS PARA FRENTE COMPARANDO AS LETRAS

//E PARA CADA ACERTO EU INCREMENTO A VARIAVEL ACERTO

for (i=strlen(nome)-1,x=0; i>=0,x<strlen(nome); i--,x++){

if (nome[x] == nome){

acertos++;

}

}

 

//SE A QUANTIDADE DE ACERTOS FOR IGUAL AO DA PALAVRA

//EU SEI QUE ELA É UM PALINDRO

//CASO CONTRARIO NAO

if(acertos==strlen(nome)){

printf("A palavra e um palindromo");

}else{

printf("A palavra nao e um palindromo");

}

 

printf("\n\n\n\n\n");

system("pause");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites
/*
Autor: Luiz Fernando Cândido Machado
E-mail: luizcandido.developer@gmail.com
Data - 29/09/2012
Goiânia - GO
*/

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

char frase[50],frase1[50], frase2[50];
int i, j, l, palindromo = 0;

int main(void){
   printf("Informe uma palavra (ou frase): ");
   gets(frase);

//Retirar os espaços da String digitada.
   for (i = 0, l = 0; i < strlen(frase); i++, l++) {
       if (frase[i] == ' ')
          i++;
       frase1[l] = frase[i];
   }
//Verifica a ultima posição da String.
   j = strlen(frase1) - 1;
//Inverte a string frase1 (já sem os espaços) e atribuí-la a string frase2.
   for (i = 0;i < strlen(frase1);i++){
       frase2[j] = frase1[i];
       j--;
   }
/*
Verifica os caracteres das Strings frase1 e frase2(string invertida).
Incrementa em 1 a variável palindromo para se igualar ao tamanho da string "original",
se e somente se, os valores das posições de frase1 e frase2 foram iguais.
*/
   for (i = 0, j = 0;i < strlen(frase); i++,j++){
       if (frase1[i] == frase2[j])
          palindromo++;
   }
   if (palindromo == strlen(frase))
      printf("\nEh um Palindromo\n\n");
   else
       printf("\nNao eh Palíndromo\n\n");
system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

/*
*  Copyright 2012 Mateus G. Pereira
*
*  Este programa é um software livre; você pode redistribui-lo e/ou
*  modifica-lo dentro dos termos da Licença Pública Geral GNU como
*  publicada pela Fundação do Software Livre (FSF); na versão 2 da
*  Licença, ou (na sua opnião) qualquer versão.
*
*  Este programa é distribuido na esperança que possa ser  util,
*  mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO
*  a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença
*  Pública Geral GNU para maiores detalhes.
*
*  Você deve ter recebido uma cópia da Licença Pública Geral GNU
*  junto com este programa, se não, escreva para a Fundação do Software
*  Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston,
*  MA  02110-1301 USA
*
*/

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

typedef enum{false = 0, true = 1} bool;

bool is_palin (const char* s)
{
   size_t len, i = 0;

   len = strlen(s) - 1;
   while(i <= (len / 2))
   {
       if(s[i] != s[len - i])
           return false;
       i++;
   }
   return true;
}

int main()
{
   char buffer[256];

   puts("Teste, é palindromo?");
   scanf("%256[^\n]s", buffer);

   if(is_palin(buffer))
       puts("Você acertou! É um palindromo.");
   else
       puts("Você errou! Não é um palindromo.");
   return 0;
}

 

Veja se é funcional, caso não me avise, para fazer as devidas modificações.

Se quiser ignorar qualquer espaço na sequencia de caracteres, utilize este código:

 

/*
*  Copyright 2012 Mateus G. Pereira
*
*  Este programa é um software livre; você pode redistribui-lo e/ou
*  modifica-lo dentro dos termos da Licença Pública Geral GNU como
*  publicada pela Fundação do Software Livre (FSF); na versão 2 da
*  Licença, ou (na sua opnião) qualquer versão.
*
*  Este programa é distribuido na esperança que possa ser  util,
*  mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO
*  a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença
*  Pública Geral GNU para maiores detalhes.
*
*  Você deve ter recebido uma cópia da Licença Pública Geral GNU
*  junto com este programa, se não, escreva para a Fundação do Software
*  Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston,
*  MA  02110-1301 USA
*
*/

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

typedef enum {false = 0, true = 1} bool;

bool is_palin (const char* s)
{
   size_t len, i = 0;

   len = strlen(s) - 1;
   while(i <= (len / 2))
   {
       if(s[i] != s[len - i])
           return false;
       i++;
   }
   return true;
}

void strnspace (char* s)
{
   size_t i = 0, p = 0;

   while(*(s + p) != '\0')
   {
       if(!isspace(*(s + p)))
           *(s + i++) = *(s + p);
       p++;
   }
   *(s + i) = '\0';
}

/* Ou
void strnspace (char* s)
{
   char* s1,* s2;
   s1 = s2 = s;

   while(*s1 != '\0')
   {
       if(!isspace(*s1))
           *s2++ = *s1;
       s1++;
   }
   *s2 = '\0';
}
*/

int main()
{
   char buffer[256];

   puts("Teste, é palindromo?");
   scanf("%256[^\n]s", buffer);
   strnspace(buffer);

   if(is_palin(buffer))
       puts("Você acertou! É um palindromo.");
   else
       puts("Você errou! Não é um palindromo.");

   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, percebi que ainda há muitas pessoas com duvidas em relação a palindromo, portanto la vai...

 

#include<stdio.h>
#include<stdlib.h>
main(){
char original [256];
char invertida [256];
int tamanho, palindromo=1, i, j;
gets(original);
for (tamanho=0; original[tamanho] != '\0'; tamanho++);{
}
for (i=0, j=tamanho-1; j>0; i++, j--){
invertida[ i ] = original[ j ];
if (invertida[ i ] != original[ i ]) // AQUI ELE COMPARA SE O INVERSO DA PALAVRA É
palindromo=0; IGUAL A PALAVRA ORIGINAL
break;
}
if (palindromo)
puts("a string eh um palindromo");
else
puts("a string NAO eh um palindromo");
system("pause>nul");
Espero que tenha ficado claro, a palavra original deve ter o mesmo significado quando invertida. Por exemplo: osso, sos, mirim.
Se comparamos a palavra original na posição [0] com a palavra invertida da posição[0] veremos que são iguais. Isso é palindromo!! hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, parece que ninguém atentou p/ o que o Quel postou:

 

Robex eu tenho que fazer em pascal

 

Tudo bem que no primeiro post ele nem mencionou a linguagem.

 

Uma pesquisa na internet já seria o suficiente: http://www.pb.utfpr.edu.br/omero/Pascal/Exercicios/String/PALINDRO.Htm

Só retirar o uses crt e as chamadas de funções específicas da biblioteca.

 

 

Michel Lima, não use gets.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.