Error en comparacion de strings.

Iniciado por NicolasPileci, 3 Junio 2017, 02:44 AM

0 Miembros y 1 Visitante están viendo este tema.

NicolasPileci

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

engel lex

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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.