[Solucionado] como llamar a main()

Iniciado por Mario Olivera, 27 Agosto 2014, 19:40 PM

0 Miembros y 1 Visitante están viendo este tema.

Mario Olivera

 Hola gente, tengo una duda, antes lo sabía hacer pero ahora no, y lo que quiero hacer es llamar a la función main, para que empieze el programa de nuevo, trabajo separando la interfaz de la implementacion y en una funcion de c++ intenté hacer return main(); y no funcionó si alguien me ayudaría se lo agradecería.

Ya que estoy quiero saber como haría para hacer un system("pause") y system ("cls"); en linux.

Desde a muchas gracias por cualquier ayuda, saludos ;D

Caster

No entiendo muy bien lo primero que preguntas y tampoco creo que hubiese podido responderte de todas formas. En cuanto a lo segundo, la funcion system() sirve para ejecutar comandos del sistema operativo, si tu abres CMD en Windows, ejecutas un par de comandos y despues haces el comando "cls" (sin comillas) lo que hará será limpiar la pantalla asi que lo que necesitas es el equivalente a esos comandos el linux, el equivalente a "cls" es "clear" y para "pause" no sabría decirte. Dicho esto te desaconsejo totalmente el uso de de system("pause"), la primera razón es el problema que tienes tu y es que no es portable, solo tendrá efecto en los sistemas que soporten el comando pause y que ademas es muy pesado llamar al sistema para hacer una pausa en tu programa, te recomiendo otras alternativas como getchar(); o esta pequeña linea de codigo:

while ( getchar() != '\n')
;


que lo que hará es estar ejecutandose mientras tu no pulses la tecla enter. Del mismo modo, en vez de utilizar system("cls") sería mejor y más portable el uso de fflush().

Como consejo te recomiendo que leas esto: |Lo que no hay que hacer en C/C++. Nivel basico|

Saludos.

jaxoR

Para que vuelva a empezar el programa simplemente pon:

main();

Y listo, empezará nuevamente. Eso es lo que yo hago en mis programas

avesudra

#3
Cita de: wiD^ en 27 Agosto 2014, 20:33 PM
Para que vuelva a empezar el programa simplemente pon:

main();

Y listo, empezará nuevamente. Eso es lo que yo hago en mis programas
Esto que comentas es inapropiado pues puedes perder el control del programa, estoy seguro que lo podéis solucionar con un bucle infinito:
Código (cpp) [Seleccionar]

#include <iostream>

int main(int argc, char** argv)
{
    for( ; ; )
    {
          //Hacer algo.
          //Condición para salir
          if(algo)
              break;
    }
    return 0;
}

Un cordial saludo.
Regístrate en

Mario Olivera

#4
Hola desde ya gracias por las ayudas que he recibido, lo de system ya lo tengo solucionado, pero lo de llamar a main no, explico un poquito que archivos tengo...

Tengo 3 archivos en mi proyecto uno llamado main.cpp, otro cabezal.h donde se muestran las funciones que tiene y un cabezal.cpp que describe las funciones... bueno desde el archivo cabezal quiero llamar a main, en un if, de un función miembro de la clase que esta en el cabezal,.cpp  y la verdad es que no se como, si alguien podría ayudarme se lo agradecería, Saludos   :D  

avesudra

#5
Cita de: 718208 en 27 Agosto 2014, 23:59 PM
Hola desde ya gracias por las ayudas que he recibido, lo de system ya lo tengo solucionado, pero lo de llamar a main no, explico un poquito que archivos tengo...

Tengo 3 archivos en mi proyecto uno llamado main.cpp, otro cabezal.h donde se muestran las funciones que tiene y un cabezal.cpp que describe las funciones... bueno desde el archivo cabezal quiero llamar a main, en un if, de un función miembro de la clase que esta en el cabezal,.cpp  y la verdad es que no se como, si alguien podría ayudarme se lo agradecería, Saludos   :D  
No te lo aconsejo pero como veas, fíjate que te vas a quedar en una llamada infinita:
Código (cpp) [Seleccionar]

if(/*condición*/)
{
   main();
}

Estoy completamente seguro de que tu código podría organizarse de manera de que no te haga falta dicha llamada.

Un saludo.
Regístrate en

Mario Olivera

 Muchas gracias por sus ayudas, he podido llamar a main(), pero te hice caso avesundra y busque otra forma de que se repita lo que queria y lo logre, nada más que decir que GRACIAS ;-)