elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con funcion palindroma en forma recursiva
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con funcion palindroma en forma recursiva  (Leído 1,832 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Problema con funcion palindroma en forma recursiva
« en: 12 Junio 2019, 03:45 am »

Hola

Tengo que hacer un ejercicio en el cual tengo que ir recorriendo un arreglo dinamico de caracteres en forma recursiva para saber si es palindromo o no.
La funcion recibe el arreglo dinamico y la longitud de la palabra.
Mi problema creo que es el IF, voy printeando lo que sucede y nose porque la funcion sigue mas alla de lo que yo querria...es decir..la idea es que corte cuando la longitud sea mayor a cero, y voy viendo que llega hasta el -5 y no se porque...hice el recorrido de la funcion en  papel, y tampoco encuentro el error..es como que sigue y no se porque


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int palindromo(char*arreglo,unsigned int longitud);
  4. int main()
  5. {
  6.    char*arreglo=NULL;
  7.    int r;
  8.    arreglo=malloc(sizeof(500));
  9.    arreglo="ana";
  10.    printf("%s",arreglo);
  11.    r=palindromo(arreglo,3);
  12.    printf("\nEl valor es %d",r);
  13.    return 0;
  14. }
  15.  
  16. int palindromo(char*arreglo,unsigned int longitud)
  17. {
  18.    printf("Longitud: %d",longitud);
  19.    if(longitud>0)
  20.    {
  21.        printf("La letra del arreglo es: %c - La letra a comparar al final es: %c - La longitud es: %d \n",*(arreglo),*(arreglo+longitud-1),longitud);
  22.        if((*arreglo)==(*(arreglo+longitud-1)))
  23.        {
  24.  
  25.            return palindromo(arreglo+1,longitud-2);
  26.        }
  27.        else
  28.        {
  29.            return 0;
  30.        }
  31.    }
  32.    else
  33.    {
  34.     return 1;
  35.    }
  36.  
  37. }


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Problema con funcion palindroma en forma recursiva
« Respuesta #1 en: 12 Junio 2019, 04:07 am »

Tu problema no está en la función sino en los parámetros... :silbar:
El segundo parámetro es un <unsigned> por lo que no puede tomar valores negativos, entonces cuando el número de caracteres es par funciona correctamente porque termina con <longitud = 0> pero cuando el número de caracteres es impar como es tu caso, el último caso sería <longitud = -1> pero al ser <unsigned> no permite el valor de -1 para la longitud y por eso tienes un problema de acceso en memoria.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
De forma recursiva « 1 2 3 »
Ejercicios
:ohk<any> 21 19,205 Último mensaje 5 Septiembre 2008, 18:54 pm
por carlitos.dll
funcion palindroma por referencia(con punteros)
Programación C/C++
roser24 1 5,967 Último mensaje 6 Mayo 2010, 03:01 am
por biribau
Problema función factorial recursiva
Java
Oblivi0n 1 2,276 Último mensaje 4 Octubre 2012, 19:03 pm
por die_guito
Funcion recursiva
Programación C/C++
Albertocn 9 3,909 Último mensaje 19 Febrero 2014, 19:50 pm
por leosansan
Función recursiva en C++
Programación C/C++
david2015 4 2,738 Último mensaje 22 Mayo 2015, 03:14 am
por Gunhack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines