Ir ao conteúdo
  • Cadastre-se
Joseph Leen

RESOLVIDO Programa em c - palíndromo

Recommended Posts

Um palíndromo é uma frase ou palavra que mantém o mesmo sentido quando lida de trás para frente. ex. ovo, osso, radar.
Escreva um programa em linguagem de programação C, que leia 10 palavras de no máximo 10 caracteres e armazene-as em um array. Em seguida leia o array e informe quantas dessas palavras são palíndromos e mostre essa palavras, convertendo seus caracteres para maiúsculas.

 

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define TAMANHO 10
struct palindromo {
	char palin[TAMANHO];
	char palin2[TAMANHO];
} p[TAMANHO];
int main(void) {
	for(int i=1; i <  2/*TAMANHO+1*/; i++) {
		int digitado,num,invertido,digito;
		fflush (stdin);
		do {
			if(strlen(p[i].palin)>TAMANHO) {
				printf("A palavra nao pode ter mais de [%d] caracteres.\n", TAMANHO);
			}
			printf("Digite a palavra [%d]: ", i);
			scanf("%s", &p[i].palin);
			system("cls"); 
			
		} while(strlen(p[i].palin)>TAMANHO);
	}
  	//
  	//
	// A PARTE DO PALINDROMO EU NÃO ESTOU CONSEGUINDO FAZER!
  	//
	//
	
	system("PAUSE");
	return 0;
}

 

Eu estou tentando fazer com if, invertendo a string com strrev e comparando com strcmp más não da certo ...
eu retirei o código que não funciona '-'

Se alguém poder ma ajudar agradeço ...

Editado por dif
Retificar post. estava com texto todo em negrito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se você entende

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define TAMANHO 10
typedef struct palindromo {
	char palin[TAMANHO];
	char palin2[TAMANHO];
} palindromo;

int main() {
    int i,digitado,num,invertido,digito;
    palindromo p[TAMANHO];

    for(i=0;i<TAMANHO;i++) {
        do{
            printf("Digite a palavra [%d]: ", i);
            scanf("%s", p[i].palin);
            if(strlen(p[i].palin)>TAMANHO) {
                printf("A palavra nao pode ter mais de [%d] caracteres.\n", TAMANHO);
            }
            else{
                strcpy(p[i].palin2, p[i].palin);
                strrev(p[i].palin2);
                if(strcmp(p[i].palin, p[i].palin2)==0)
                    printf("Igual\n");
            }
        }while(strlen(p[i].palin)>TAMANHO);
    }

	return 0;
}

Qualquer duvida me pergunte, essa é a parte que vê se as palavras são palindromos, mas é só para você entender como funciona.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@MassakiMsk obrigado!
eu acabei de conseguir colocando esse código:

	for(int i=1; i <  3/*TAMANHO+1*/; i++){
		strcpy(p[i].palin2,p[i].palin);
		strrev(p[i].palin);
		if(strcmp(p[i].palin,p[i].palin2)==0){
			printf("%s e um palindromo.", p[i].palin);
		}else{
			printf("%s não e um palindromo.", p[i].palin);
		}
	}

funcionou corretamente! ele pode gerar algum problema futuro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Joseph Leen Outro exemplo de como fazer essa checagem:

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

int main(void) {
  char s1[] = "arara";
  char s2[] = "arara";

  int n = strlen(s1);

  if( n == strlen(s2))
    for(int i = 0; i < strlen(s1); i++)
      if(s1[i] == s2[n-i-1])
        printf("\ns1[%d]: %c | s2[%d]: %c", i, s1[i], (n-i-1), s2[n-i-1] );


        return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO!

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define TAMANHO 10
struct palindromo {
	char palin[TAMANHO];
	char palin2[TAMANHO];
} p[TAMANHO];
int main(void) {
	int contar=0;
	for(int i=1; i < TAMANHO+1; i++){
		fflush (stdin);
		do {
			if(strlen(p[i].palin)>TAMANHO) {
				printf("A palavra nao pode ter mais de [%d] caracteres.\n", TAMANHO);
			}
			printf("Digite a palavra [%d]: ", i);
		     scanf("%s", &p[i].palin);
		  system("cls"); 	
		}while(strlen(p[i].palin)>TAMANHO);
	}
	for(int i=1; i < TAMANHO+1; i++){
		strcpy(p[i].palin2,p[i].palin);
		strrev(p[i].palin);
		if(strcmp(p[i].palin,p[i].palin2)==0){
			printf("Palavra palindromo: %s.\n", strupr(p[i].palin2));
			contar += 1;
		}
	}
	printf("%d  -  palavras palindromos foram encontradas.\n", contar);
	system("PAUSE");
  return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

:)

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

int main(void) {
  char s1[] = "arara";
  char s2[] = "arara";
  int i;
  for(i = 0; i < strlen(s1) && s1[i] == s2[strlen(s1)-i-1]; i++){}
  if(i == strlen(s1)) printf("Palindromo");
  else printf("Nao é Palindromo");
  return 0;
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×