Ir ao conteúdo
  • Cadastre-se

Programa em c - palíndromo


Ir à solução Resolvido por Joseph Leen,

Posts recomendados

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 ...

Link para o comentário
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
Link para o comentário
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 ?

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

  • Solução

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;
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...