Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema de ejecucion.

Estas en el tema de Problema de ejecucion. en el foro de C/C++ en Foros del Web. Hola, estoy aprendiendo un poco de C++ y tengo el siguiente programa: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original #include <iostream> #include<stdio.h>   int factorial2 ( ...
  #1 (permalink)  
Antiguo 24/09/2012, 16:53
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 9 meses
Puntos: 4
Pregunta Problema de ejecucion.

Hola, estoy aprendiendo un poco de C++ y tengo el siguiente programa:


Código C++:
Ver original
  1. #include <iostream>
  2. #include<stdio.h>
  3.  
  4. int factorial2(int n) {
  5.   if(n<2)
  6.     return 1;
  7.   else
  8.     return n * factorial(n-1);
  9. }
  10.  
  11. int factorial(int n) {
  12.     return n * factorial2(n-1);
  13. }
  14. int main(){
  15.   int num=5;
  16.  
  17.   printf("\tEl resultado es: %i\n", factorial(num)); //Llama la funcion e imprime resultado
  18.     return 0;
  19. }

Cuando ejecuto me arroja el siguiente error:
'factorial' was not declared in this scope --Linea 8

En esa linea esta: return n * factorial(n-1);

Y otro mensaje:
control reaches end of non-void function--- Linea 9

En esa linea esta: } el corchete que cierra la funcion.

El codigo anterior lo tengo en Java, y corre sin ningun problema. Aun estoy conociendo C++ por lo que si me gustaria saber cual es el problema.

Gracias :)
__________________
Keep learning, someday the knowledge will be your future...

Última edición por Loop29; 24/09/2012 a las 17:05
  #2 (permalink)  
Antiguo 24/09/2012, 18:19
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Problema de ejecucion.

Hola! el problema es que para factorial2 la funcion factorial no esta declarada, es decir tenias que haber puesto antes la funcion factorial. Pero si haces esto va a pasar lo mismo: para factorial no va a estar declarado la funcion factorial2
Para evitar estos inconveniente primero se declaran los prototipos de las funciones:

Código C++:
Ver original
  1. #include <iostream>
  2.     #include<stdio.h>
  3.     /* prototipos de funciones */
  4.       int factorial2(int n);
  5.      int factorial(int n);
  6.  
  7.  
  8.     int factorial2(int n) {
  9.       if(n<2)
  10.         return 1;
  11.       else
  12.         return n * factorial(n-1);
  13.     }
  14.      
  15.     int factorial(int n) {
  16.         return n * factorial2(n-1);
  17.     }
  18.     int main(){
  19.       int num=5;
  20.      
  21.       printf("\tEl resultado es: %i\n", factorial(num)); //Llama la funcion e imprime resultado
  22.         return 0;
  23.     }
Incluyendo estos prototipos las funciones son visibles entre si. De todos formas la mayoria de la gente suele seguir este orden para hacer un programa:

1º header y defines
2º prototipos de funciones
3º main
4º funciones


Saludos
  #3 (permalink)  
Antiguo 24/09/2012, 18:23
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 9 meses
Puntos: 4
Respuesta: Problema de ejecucion.

Cita:
Iniciado por cesar_casla Ver Mensaje
Hola! el problema es que para factorial2 la funcion factorial no esta declarada, es decir tenias que haber puesto antes la funcion factorial. Pero si haces esto va a pasar lo mismo: para factorial no va a estar declarado la funcion factorial2
Para evitar estos inconveniente primero se declaran los prototipos de las funciones:

Código C++:
Ver original
  1. #include <iostream>
  2.     #include<stdio.h>
  3.     /* prototipos de funciones */
  4.       int factorial2(int n);
  5.      int factorial(int n);
  6.  
  7.  
  8.     int factorial2(int n) {
  9.       if(n<2)
  10.         return 1;
  11.       else
  12.         return n * factorial(n-1);
  13.     }
  14.      
  15.     int factorial(int n) {
  16.         return n * factorial2(n-1);
  17.     }
  18.     int main(){
  19.       int num=5;
  20.      
  21.       printf("\tEl resultado es: %i\n", factorial(num)); //Llama la funcion e imprime resultado
  22.         return 0;
  23.     }
Incluyendo estos prototipos las funciones son visibles entre si. De todos formas la mayoria de la gente suele seguir este orden para hacer un programa:

1º header y defines
2º prototipos de funciones
3º main
4º funciones


Saludos
Oh ya veo, muchas gracias por la explicacion me ha sido de mucha ayuda!
Saludos! :)
__________________
Keep learning, someday the knowledge will be your future...

Etiquetas: funcion, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:59.