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


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Consulta - Llamar función dentro de su misma función
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consulta - Llamar función dentro de su misma función  (Leído 1,669 veces)
YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
Consulta - Llamar función dentro de su misma función
« en: 8 Marzo 2015, 13:49 »

Buenas,

Me gustaría consultarles algo y es lo siguiente:

He echo una calculadora en consola, y para repetir el proceso he echo una sentencia if llamando a la función dentro de su misma función, aquí el código:

Código
  1. #define suma(a,b) a + b
  2.  
  3. void sumando(){
  4. cout << "Introduce el primer valor: ";
  5. cin >> num1;
  6.  
  7. cout << "Introduce el segundo valor: ";
  8. cin >> num2;
  9.  
  10. suman = suma(num1, num2);
  11.  
  12. cout << "El resultado de la suma es: " << suman << endl;
  13.  
  14. cout << "Si quieres seguir sumando escribe '1' (si quieres salir escribe otro numero): ";
  15. cin >> seguir;
  16.  
  17. if(seguir == 1){
  18. sumando();
  19. }
  20. else;
  21. }

Como ven he llamado a la función sumando() dentro de su misma función, y me preguntaba si eso está bien.

No me da ningún error ni nada, me va perfectamente el programa, pero tengo esa consulta de si está bien.

Gracias, saludos.


En línea

Esta página web no está disponible - Google Chrome
Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Re:
« Respuesta #1 en: 8 Marzo 2015, 14:18 »

Creo que eso se llama recursividad de las funciones, y si es totalmente valido y muy útil en ocasiones como esa.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Consulta - Llamar función dentro de su misma función
« Respuesta #2 en: 8 Marzo 2015, 14:57 »

Yo te recomendaría declarar la función como bool, y, desde el lugar donde la llamas, hacer un:
Código
  1. while(sumando());

Y convertir el if en:

Código
  1. if(seguir == 1)
  2.    return true;
  3. else
  4.    return false;

La recursividad es útil, pero este no es un caso donde sea necesaria. La recursividad tiende a hacer códigos más sencillos, pero a la vez puede dar más problemas, como un stack overflow.

Ye digo: "Usa cada cosa en su momento."
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Consulta - Llamar función dentro de su misma función
« Respuesta #3 en: 8 Marzo 2015, 17:24 »

Yo te recomendaría declarar la función como bool, y, desde el lugar donde la llamas, hacer un:
Código
  1. while(sumando());

Y convertir el if en:

Código
  1. if(seguir == 1)
  2.    return true;
  3. else
  4.    return false;
Ya que el resultado de los operadores relacionales es el esperado (true si se cumple la condición, falso en caso contrario) la sentencia condicional se puede eliminar quedando solo la sentencia de retorno:
Código
  1. return seguir == 1;

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
Re: Consulta - Llamar función dentro de su misma función
« Respuesta #4 en: 8 Marzo 2015, 17:29 »

Gracias por sus respuestas.
Ya me voy haciendo ideas.

Saludos.
En línea

Esta página web no está disponible - Google Chrome
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines