quel 0 Denunciar post Postado Setembro 21, 2006 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
Vergil 15 Denunciar post Postado Setembro 21, 2006 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
quel 0 Denunciar post Postado Setembro 21, 2006 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
Robex 171 0 Denunciar post Postado Setembro 21, 2006 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
Robex 171 0 Denunciar post Postado Setembro 21, 2006 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
skimo-solar 0 Denunciar post Postado Setembro 21, 2006 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???ObrigadaFaç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
Robex 171 0 Denunciar post Postado Setembro 21, 2006 Aspas são problemas se nao utiliza eh simples tire-as...Fiz esse código correndo e garanto que funciona com ou sem aspas... Compartilhar este post Link para o post Compartilhar em outros sites
Robex 171 0 Denunciar post Postado Setembro 21, 2006 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
skimo-solar 0 Denunciar post Postado Setembro 21, 2006 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
Robex 171 0 Denunciar post Postado Setembro 22, 2006 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
quel 0 Denunciar post Postado Setembro 22, 2006 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
Robex 171 0 Denunciar post Postado Setembro 22, 2006 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
skimo-solar 0 Denunciar post Postado Setembro 25, 2006 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
Robex 171 0 Denunciar post Postado Setembro 25, 2006 Sem crise bixo, fica sussa esta tudo bem...Skimo aperte minha mão... Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Tofanin 0 Denunciar post Postado Maio 5, 2008 #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
reccall 0 Denunciar post Postado Setembro 29, 2012 /* 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
Mateus GP 13 Denunciar post Postado Novembro 20, 2012 /* * 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
Michel Lima 0 Denunciar post Postado Março 3, 2013 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
_Isis_ 202 Denunciar post Postado Março 4, 2013 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
Mateus GP 13 Denunciar post Postado Maio 2, 2013 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. Compartilhar este post Link para o post Compartilhar em outros sites