Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: NicolasPileci en 3 Junio 2017, 02:44 AM

Título: Error en comparacion de strings.
Publicado por: NicolasPileci en 3 Junio 2017, 02:44 AM
Estimados,

Serian tan amables de indicarme por que este programa me indica que debe haber una coma, un punto y coma o un parentesis antes de la variable "cad1".

La idea del programa es verificar si una frase es palindromo, pero por favor, no respondan la resolución del mismo.

Gracias!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 40

int verificarPalindromo (char[TAM] cad1, char[TAM] cad2);

int main()
{
   system ("color 0a");
   char cad1[40],
        cad2[40];
   printf ("Ingrese la cadena: \n\n");
   gets (cad1);
   if (!verificarPalindromo (cad1, cad2))
       puts ("La cadena es un palindromo");
   else
       puts ("La cadena no es un palindromo");
   return 0;
}

int verificarPalindromo (char[TAM] cad1, char[TAM] cad2)
{
   char *ini,
        *fin;
   ini = cad2;
   fin = cad1;
   while(*fin)
   {
       *ini = *fin;
       fin++;
   }
   return strcmp (cad1, cad2);
}
Título: Re: Error en comparacion de strings.
Publicado por: engel lex en 3 Junio 2017, 03:50 AM
el problema es que
char *ini,
*fin;
///....
while(*fin)



pero cuanto vale fin?

allí solo contiene basura

lo que tienes que hacer es leer cuanto tiene el string de largo (strlen) y recorrer desde el final hasta el principio y desde el principio hasta el final, comparando ambos lados es decir
palabra = arepera

arepera
^_____^ -> a == a ->ok

arepera
^___^ -> r == r ->ok

arepera
  ^_^ -> e == e ->ok

arepera
  ^_^ -> e == e ->ok

arepera
   ^ -> puntero_1 >= puntero_2 -> fin -> es palidromo




atenta
^____^ -> a == a ->ok

atenta
^__^ -> t == t ->ok

atenta
  ^^ -> e != n -> fin -> no es palindromo

Título: Re: Error en comparacion de strings.
Publicado por: NicolasPileci en 3 Junio 2017, 15:26 PM
Muchas gracias!