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

 

 


Tema destacado: Introducción a Git (Primera Parte)


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ayuda con este programa con funcion recursiva
« en: 6 Febrero 2017, 20:12 pm »

// segun esto imprime la palabra pero alrevez , y hay error y no tengo idea de cual es el error , o si hay una manera más facil . mil gracias

#include <stdio.h>
#include  <conio.h>
#include<stdlib.h>

void invierte(char*,char*,int);

int main(int a,char*argv[])
{
   char palabra[]="javier";
   char*invertida = (char*)malloc(sizeof(palabra));
   
   invierte(palabra, invertida, strlen(palabra)-1);
   
   printf("%s",invertida);
   
   return 0;
   
}
void invierte ( char*p,char*i,int k)
{
   *i++ = p[k];
   if(!(k--<0)) invierte(p,i,k);
}


En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: ayuda con este programa con funcion recursiva
« Respuesta #1 en: 6 Febrero 2017, 21:00 pm »

#include <stdio.h>
#include <stdlib.h>

Necesitas los espacios correctos en las librerias, la de conio.h no la necesitas.

No le veo error alguno.

Cuál es el problema??


En línea


MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ayuda con este programa con funcion recursiva
« Respuesta #2 en: 6 Febrero 2017, 21:08 pm »

Para hacerlo de tu forma me gusta más una solución iterativa. En cambio para escribir una frase al revés esta solución recursiva es muy elegante:

Código
  1. #include <stdio.h>
  2.  
  3. void invierte(char *c) {
  4.    if(*c)
  5.       invierte(c+1);
  6.    putchar(*c);
  7. }
  8.  
  9. int main() {
  10.    invierte("Hola, soy una cadena");
  11. }



Mira, siguiendo con la misma idea:

Código
  1. void invierte ( char*p, char*i, int k) {
  2.    if(*p && k)
  3.        invierte(p+1, i, k-1);
  4.    i[k] = *p;
  5. }

Al final sí tiene una solución elegante recursiva :D
« Última modificación: 6 Febrero 2017, 21:19 pm por MAFUS » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: ayuda con este programa con funcion recursiva
« Respuesta #3 en: 7 Febrero 2017, 11:18 am »

Código:
if(!(k--<0)) invierte(p,i,k);

Revisa y corrige lo anterior. Está mal. Si no ves el error estudia sobre predecrementos y postdecrementos.
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con función recursiva.
Programación C/C++
Javi.24 1 2,513 Último mensaje 16 Junio 2012, 05:41 am
por GuzmanG
AYUDA Función Recursiva
Programación C/C++
dvigon 6 3,341 Último mensaje 20 Diciembre 2013, 02:13 am
por dvigon
Funcion recursiva
Programación C/C++
Albertocn 9 3,950 Último mensaje 19 Febrero 2014, 19:50 pm
por leosansan
Programacion con Funcion Recursiva Ayuda
Programación C/C++
DRinoa 2 1,804 Último mensaje 11 Octubre 2015, 12:53 pm
por user-marcos
ayuda.funcion recursiva
Java
jkaszr 1 1,579 Último mensaje 21 Abril 2017, 01:08 am
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines