Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2013, 17:39
Avatar de nightwalkervampire
nightwalkervampire
 
Fecha de Ingreso: febrero-2013
Mensajes: 2
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta funciones en c++ modo de declarar

Hola a todos!

Ok el post es para aclarar algunas dudas ya que soy nuevo en esto de programar en c++, espero que me puedan ayudar, gracias de antemano.

Para empezar he estado leyendo dos libros que aseguran ser para principiantes uno es el C++ iniciación y referencia edit: mc graw hill, y otro es el C++ how to program eighth edition edit: Deitel, cada uno propone una manera diferente de programar pero en el cual dan errores o no se si es que uno tiene que tener la noción de lo que hace y no son básicos como se hacen llamar.

ok lo que he leido en cada uno es que uno puede declarar las funciones en c++ sin tener que darles a las mismas un dato de retorno ejem:

primer caso:
Código:
MiFuncion() { codigo... }// no funciono

int MiFuncion() { codigo...}// funciono
eso lo intente pero solo me dio errores de compilación, declarando la función asi fuera void pude hacer que funcionara, pero entonces por que muestran que las funciones pueden ser declaradas sin especificar el dato de retorno, es posible hacerlo? y tambien muestran que pueden ser declaradas después de el main() para ser llamadas durante la ejecución

lo otra duda que me ronda en la cabeza es que me puse a hacer un pequeño menú para ver como era la cosa en la linea de comando utilizando un switch, pues funciono bien pero se me ocurrió separar lo que hacia en funciones llamar a las mismas desde el menú también trabajo bien dado que las funciones fueron declaradas antes de el main() y finalizaba el programa , los errores empezaron en el momento que cada función empezó a tener su submenu para llamar a la función que hacia de menú principal, decía que no había sido declarada la función por lo cual no podía ser llamada ejem:

segundo caso:
Código:
int mimenu(){ switch(x){ case 1: option();...} }//menu

int option(){ codigo...}//opción  

int main() { mimenu(); }//llamada de menu
en ese caso me arrojo un error que option() no había sido declarada

tercer caso
Código:
int main() { mimenu(); }//llamada de menu 

int mimenu(){ switch(x){ case 1: option();...} }//menu

int option(){ codigo...}//opción
aquí arrojo el mismo error pero con el mimenu() bueno tal como aparecía en el libro la función después de el main()

buscando por internet por que me pareció que los dos libros estaban des actualizados encontré algo que ya había leído, prototipos de las funciones con eso solucione los dos errores que tenia encontrado en los libros hice esto

Código:
#include <iostream>

using namespace std;

int mimenu();
int fileopen();

int main()
{
        mimenu();
}//end main()

int mimenu()
{
    int x; //Variable for menu option
    //system("cls");
    cout << "1. Open\n2. Save\n3. Exit\n\n";
    cin >> x;
    switch( x )
    {
        case 1:
            fileopen();
            break;
        case 2:
            //savefile();
            break;
        case 3:
            //exitfile();
            break;
        default:
            cout << "No such an option.\n";
            break;
    }//end switch
    return 0;
}//end mimenu()

int fileopen()
{
    cout << "The file have be open\n\n";
    int x;
    cout << "1.Back | 2.Exit: ";
    cin >> x;
    switch( x )
    {
        case 1:
            mimenu();
            break;
        case 2:
            break;
        default:
            break;
    }//end switch
    return 0;
}//end  fileopen()
funciona de maravilla ahora las dudas que tengo son, por que muestran que se pueden declarar funciones sin datos de retorno?, por que si ya declare las funciones prototipos con su retorno de dato en este caso int, por que debo declarar el dato de retorno int nuevamente?, por que si se esta declarando las funciones antes de el main() igual arroja error al momento de compilar como en el segundo caso?

les agradecería toda la ayuda que puedan brindar y recomendaciones