Preciso fazer um programa para dizer se a palavra e palindroma ou não, sem usar a biblioteca string.h, cheguei até esse ponto e não está dando certo, e gostaria de saber se tem como arrumar e como eu faço isso.
//Palindromo teste 6
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 250
#define MAX_SIZE_WORD 16
void entrada(char metade1[], char metade2[]){
int main(){
int c;
int i;
int flag;
char str[MAX_SIZE];
char entrada[100];
char invertida[100];
char metade1[50];
char metade2[50];
int tam=0;
int tamcalc=0;
int metade=0;
/*================================================*/
/*User Input */
/*================================================*/
flag = 0;
do
{
scanf ("%50[^\n]", str);
while ((c = getchar()) != '\n' && c != EOF){}
/*int tam = 0
char palavras[100]
while(palavras[tam] != '\0')
tam++;
*/
//checar se a string possui menos doq 15 caracteres
if(str[16]){
int i = 0;
while (str[i] != '\0')
{
i++;
}
printf("%d\n", i);
return 0;
// se a string apenas possui letras maisculuas e minusculas
{
int i, tam;
// 'A'-->65, 'Z'-->90, 'a'-->97, 'z'-->122
for(i=0; i<tam; i++) {
if ( (str[i]>=65 && str[i]<=90) ||
(str[i]>=97 && str[i]<=122));
}
flag = 1;
str[i]='\0'; // finalização da String
}
}else
{
printf("-1\n");
}
/* else
{
printf("-1\n");
}
*/
} while (flag == 0);
//cálculo do palindromo
tamcalc=tam; // Variavel para calculo da entrada espelhada
metade=tam/2;// Variavel para calculo das metades
for(int x = 0; x<metade;x++){//Calculo para a primeira metade da string
metade1[x]=entrada[x];
}
metade1[metade]='\0'; //Finaliza string primeira metade
for(int x=0;x<metade;x++){ // calculos da segunda metade, essa sendo espelhada do final da string entrada
metade2[x]=invertida[x];
}
metade2[metade]='\0'; //finaliza string metade2
if(strcmp(metade1,metade2) == 0){ // logica para exibir resposta
printf("e palindromo");
}
else
printf("não e palindromo");
Pergunta
Alessa Toledo
Preciso fazer um programa para dizer se a palavra e palindroma ou não, sem usar a biblioteca string.h, cheguei até esse ponto e não está dando certo, e gostaria de saber se tem como arrumar e como eu faço isso.
//Palindromo teste 6
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 250
#define MAX_SIZE_WORD 16
void entrada(char metade1[], char metade2[]){
int main(){
int c;
int i;
int flag;
char str[MAX_SIZE];
char entrada[100];
char invertida[100];
char metade1[50];
char metade2[50];
int tam=0;
int tamcalc=0;
int metade=0;
/*================================================*/
/*User Input */
/*================================================*/
flag = 0;
do
{
scanf ("%50[^\n]", str);
while ((c = getchar()) != '\n' && c != EOF){}
/*int tam = 0
char palavras[100]
while(palavras[tam] != '\0')
tam++;
*/
//checar se a string possui menos doq 15 caracteres
if(str[16]){
int i = 0;
while (str[i] != '\0')
{
i++;
}
printf("%d\n", i);
return 0;
// se a string apenas possui letras maisculuas e minusculas
{
int i, tam;
// 'A'-->65, 'Z'-->90, 'a'-->97, 'z'-->122
for(i=0; i<tam; i++) {
if ( (str[i]>=65 && str[i]<=90) ||
(str[i]>=97 && str[i]<=122));
}
flag = 1;
str[i]='\0'; // finalização da String
}
}else
{
printf("-1\n");
}
/* else
{
printf("-1\n");
}
*/
} while (flag == 0);
//cálculo do palindromo
tamcalc=tam; // Variavel para calculo da entrada espelhada
metade=tam/2;// Variavel para calculo das metades
for(int x=0;x<tam;x++){ //calculo inverter string entrada
tamcalc--;
invertida[x]=entrada[tamcalc];
}
invertida[tam]='\0';// Finaliza a string
for(int x = 0; x<metade;x++){//Calculo para a primeira metade da string
metade1[x]=entrada[x];
}
metade1[metade]='\0'; //Finaliza string primeira metade
for(int x=0;x<metade;x++){ // calculos da segunda metade, essa sendo espelhada do final da string entrada
metade2[x]=invertida[x];
}
metade2[metade]='\0'; //finaliza string metade2
if(strcmp(metade1,metade2) == 0){ // logica para exibir resposta
printf("e palindromo");
}
else
printf("não e palindromo");
}
return 0;
}
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.