Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: arcanu en 10 Septiembre 2010, 03:10 am



Título: Ejercutar main desde otro main.
Publicado por: arcanu en 10 Septiembre 2010, 03:10 am
Holas, me gustaria que me puedan gracias por adentado:
Weno me dejaron hacer un programa una especi de presentacion, donde mostraba lo siguien
Citar
#include <iostream>
#include <conio2.h>
#include <windows.h>
#include <intro.cpp>
using namespace std;

int main()
{
    char op;
    do{
    char soundfile[] = "f:/presentacio.wav" ;
  //  PlaySound((LPCSTR)soundfile, NULL, SND_FILENAME | SND_ASYNC );
    textcolor(CYAN);
cout<<"       ?Sexy"<<endl;
cout<<"____?Sexy?Sexy"<<endl;
cout<<"___y?Sexy?Sexy?"<<endl;
cout<<"___?Sexy?Sexy?S"<<endl;
cout<<"___?Sexy?Sexy?S               PRODUCCIONES "<<endl;
cout<<"__?Sexy?Sexy?Se"<<endl;
cout<<"_?Sexy?Sexy?Se                ***** Un Ingeniero no es un  "<<endl;
cout<<"_?Sexy?Sexy?Se_"<<endl;
cout<<"_?Sexy?Sexy?Sexy?                    ser calculador y frio, "<<endl;
cout<<"?Sexy?Sexy?Sexy?Sexy "<<endl;
cout<<"?Sexy?Sexy?Sexy?Sexy?Se                 simplemente su cerebro es   "<<endl;
cout<<"?Sexy?Sexy?Sexy?Sexy?Sex"<<endl;
cout<<"_?Sexy?__?Sexy?Sexy?Sex                     mas fuerte que su corazon. *****"<<endl;
cout<<"___?Sex____?Sexy?Sexy?"<<endl;
cout<<"___?Sex_____?Sexy?Sexy"<<endl;
cout<<"___?Sex_____?Sexy?Sexy"<<endl;
cout<<"____?Sex____?Sexy?Sexy"<<endl;
cout<<"_____?Se____?Sexy?Sex"<<endl;
cout<<"______?Se__?Sexy?Sexy"<<endl;
cout<<"_______?Sexy?Sexy?Sex"<<endl;
cout<<"________?Sexy?Sexy?sex                  Tu controlas "<<endl;
cout<<"_______?Sexy?Sexy?Sexy?Se"<<endl;
cout<<"_______?Sexy?Sexy?Sexy?Sexy?                    Tu      "<<endl;
cout<<"_______?Sexy?Sexy?Sexy?Sexy?Sexy"<<endl;
cout<<"_______?Sexy?Sexy?Sexy?Sexy?Sexy?S             Destino "<<endl;
cout<<"________?Sexy?Sexy____?Sexy?Sexy?se"<<endl;
cout<<"_________?Sexy?Se_______?Sexy?Sexy?"<<endl;
cout<<"_________?Sexy?Se_____?Sexy?Sexy?"<<endl;
cout<<"_________?Sexy?S____?Sexy?Sexy"<<endl;
cout<<"_________?Sexy?S_?Sexy?Sexy"<<endl;
cout<<"________?Sexy?Sexy?Sexy"<<endl;
cout<<"________?Sexy?Sexy?S              DUDAS O PREGUNTAS "<<endl;
cout<<"________?Sexy?Sexy"<<endl;
cout<<"_______?Sexy?Se         ANGEL1D@HOTMAIL.COM  "<<endl;
cout<<"_______?Sexy?"<<endl;
cout<<"______?Sexy?"<<endl;
cout<<"______?Sexy?"<<endl;
cout<<"______?Sexy"<<endl;
cout<<"______?Sexy"<<endl;
cout<<"_______?Sex"<<endl;
cout<<"_______?Sex"<<endl;
cout<<"_______?Sex"<<endl;
cout<<"______?Sexy"<<endl;
cout<<"Repetir sonido s/n"<<endl;
cin>>op;
system("cls");
    }while(op=='s');
    return 0;
    system("pause");

}


Ahora  lo que m e pidieron hacer es, que este menu, me salga cada ves q cree un programita, bueno lo pondria despues de declarar variables, con un copia y pega,pega, pero lo que tengo q hacer es guarlo de alguna forma que lo llame desde un main de otro programa, he tenido la idia de guardarlo en una especie de libreria, y de hay llamarlo como un metodo, pero no logro conseguir, si alguien me podria ayudar estaria muy agradecido .
No inporta el compilador, me puedo adaptar, actualmente uso code blocks, gracias.


Título: Re: Ejercutar main desde otro main.
Publicado por: bizco en 10 Septiembre 2010, 03:24 am
no tienes ni que copiar y pegar, usa otro nombre que no sea main y te creas un cpp donde implementas la funcion y un h donde tienes el prototipo, despues haces un include y añades el cpp que corresponde al proyecto.


Título: Re: Ejercutar main desde otro main.
Publicado por: arcanu en 10 Septiembre 2010, 03:28 am
Muchas, gracias por responder, pero podrias ser algo mas especifico, como darme un ejemplo de como hacerlo y ese nuevo main alque le cambio de nombre donde deve estar guardado. mil gasias.


Título: Re: Ejercutar main desde otro main.
Publicado por: bizco en 10 Septiembre 2010, 03:31 am
nuevo.cpp

void loquesea()
{
 hacer algo
}

nuevo.h

void loquesea();

main.cpp

#include "nuevo.h"



Título: Re: Ejercutar main desde otro main.
Publicado por: rob1104 en 10 Septiembre 2010, 04:42 am
No es necesrio crear 3 archivos, en un solo archivo puedes tener el main, el prototipo de la funcion menu y la funcion dicha.
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void menu();  //Prototipo de la funcion
  6.  
  7. int main()
  8. {
  9.    char r = 's';
  10.    while(r == 's')
  11.    {
  12.        menu();  //Mandamos llamar a la funcion
  13.        cout << "Imprimir menu s/n"; cin >> r;
  14.    }
  15.    return 0;
  16. }
  17. /*Funcion menu()*/
  18. void menu()
  19. {
  20.   cout << "Opcion 1" << endl;
  21.   cout << "Opcion 2" << endl;
  22.   cout << "Opcion 3" << endl;
  23. }
  24.  


Título: Re: Ejercutar main desde otro main.
Publicado por: bizco en 10 Septiembre 2010, 04:48 am
Si, pero el quier usarlo en otros programas, creo que la mejor forma es hacerse un h y un cpp aparte y ya puede usarlo comodamente.


Título: Re: Ejercutar main desde otro main.
Publicado por: rob1104 en 10 Septiembre 2010, 05:08 am
Cierto, no lei bien esa parte. Creo que asi se simplificaria un poco.

menu.h
Código
  1. #ifndef MENU_H_INCLUDED
  2. #define MENU_H_INCLUDED
  3.  
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. void menu();  //Prototipo de la funcion
  9.  
  10. /*Funcion menu()*/
  11. void menu()
  12. {
  13.   cout << "Opcion 1" << endl;
  14.   cout << "Opcion 2" << endl;
  15.   cout << "Opcion 3" << endl;
  16. }
  17.  
  18. #endif // MENU_H_INCLUDED
  19.  

menu.cpp
Código
  1. #include "menu.h"
  2.  
  3. int main()
  4. {
  5.    char r = 's';
  6.    while(r == 's')
  7.    {
  8.        menu();  //Mandamos llamar a la funcion
  9.        cout << "Imprimir menu s/n"; cin >> r;
  10.    }
  11.    return 0;
  12. }
  13.  

Saludos


Título: Re: Ejercutar main desde otro main.
Publicado por: bizco en 10 Septiembre 2010, 05:24 am
en este caso lo simplificaria, pero no veo buena practica poner codigo en archivos de cabecera.


Título: Re: Ejercutar main desde otro main.
Publicado por: rob1104 en 10 Septiembre 2010, 05:29 am
en este caso lo simplificaria, pero no veo buena practica poner codigo en archivos de cabecera.
Yo tampoco, pero solo es una funcion (además es para que lo comprenda si es su primera vez). Ya cuando tenga 100 funciones, entonces si, que divida prototipos y funciones en archivos diferentes.

Solo es una opinión, seguro ya que lo comprenda y entienda decidirá la forma adecuada y que mas se le acomode de hacerlo.

 :)


Título: Re: Ejercutar main desde otro main.
Publicado por: bizco en 10 Septiembre 2010, 05:31 am
si, pero por lo que hablamos en privado no sabe y si se mete en un programa mas grande y luego empiezan a salirle errores del tipo que ya hay codigo definido etc pues es mejor empezar haciendolo bien.


Título: Re: Ejercutar main desde otro main.
Publicado por: arcanu en 10 Septiembre 2010, 20:13 pm
Asu muchas gracias por sus respuestas, ia lo entendi , ahora no c q me paso, pero no logro donde copiar el menu.cpp, debe estar junto al main.cpp, del cual lo llamo? en la carpeta debug o afuerita o en la carpeta del compilador??, y si no necesita el main, principl darle una ruta, de como llama al menu, o como asi es q lo llama, al manu?.

De Todos mocdos , muchas gracias por las respuestas.Saludos.

EI: juntando mensajes.

Bueno, estuve tratando de ver en dond eponerlo, y encontre una solucion algo, defectuosa pero en su caso me sirvio.
Lo ejecute en cod block y funciono:

y aqui va..1 primero fue donde el compilar de code blocks. c/archivo.../codeblocks/win.., una ves aqui, entre a la carpeta, libreria, hay hay una serie de librerias , agarre una la copie, le modifique el monbre , por menu, y lo abri, le cambie su contenido por el metodo, de la chika q poste en el inicio, y guarde cambios, y como puso rob, use su menu, asi:

Citar
#include "menu.h"
#include "iostream"
 
int main()
{
    char r = 's';
    while(r == 's')
    {
        menu();  //Mandamos llamar a la funcion
        cout << "Imprimir menu s/n"; cin >> r;
    }
    return 0;
}
 
y juas, q compilo, y lo llamo la metood q tenia en dicha libreria, es un metodo, no eficiente, peor para el caso como dije me sirvio, D , gracias por sus repsestas,

Tema solucionado..