Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
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...
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");}
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.
Aspas são problemas se nao utiliza eh simples tire-as...Fiz esse código correndo e garanto que funciona com ou sem aspas...
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");}
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.
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?
Robex eu tenho que fazer em pascal e o professor nao ensinou nada de vetor nem matriz, ele esta ensinando o basicoObrigada
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?
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.
Sem crise bixo, fica sussa esta tudo bem...Skimo aperte minha mão...
#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;*
*
}*
/*
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];
} frase2[j] = frase1[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");
}/*
* 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;
}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
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.
Mas Isis em um fórum sobre C, eu vou pensar em C.
Se ouço o barulho de cascos, penso em cavalos, não em zebras.
Sim, essa é a lógica, que aliás deveria ter sido usada antes de postar no fórum errado. Com 67 posts (não sei com quantos o membro estava quando abriu o tópico), não seria esperado que usasse a área correta?
E olhe que rolou uns coveiros aí: a data do tópico é de 2006 e "de repente" salta de 2006 p/ 2008 e 2012/2013.
Se for considerar somente o fato de que todo mundo escreveu código em C aqui, como fica? Move pro de pascal, algoritmos ou deixa aqui, pois virou uma salada e a dúvida não faria parte da seção. Mas sendo um tópico com 6 anos no mínimo, compensa mexer?
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.