Y no hace falta que uses exit(0), con el return 0 bastaba.
te refieres a reemplazar el exit por el return?
porque si es así, lo probé y no sirvió.
Debería de servir, mira:
Código:
leo@lein:~/Escritorio/c_proyect$ cat code.c | indent
/************************************
* Solución al Teorema de Pitágoras *
************************************
* Creado por STANHMAL *
************************************/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
enum stan
{ continua };
int
main ()
{
int x;
double c, c2, C, C2, h, h2;
enum stan hmal;
printf ("\n **************************************\n");
printf (" * Solución al Teorema de Pitágoras *\n");
printf (" **************************************\n\n");
hmal = continua;
while (hmal == continua)
{
printf ("\n1. Para hallar un cateto.\n");
printf ("2. Para hallar la hipotenusa.\n3. Para salir.\n");
printf ("Opción escogida: ");
scanf ("%d", &x);
if (x == 1)
{
printf ("Introduzca el valor de un cateto: ");
scanf ("%lf", &c);
printf ("Introduzca el valor de la hipotenusa: ");
scanf ("%lf", &h);
c2 = c * c;
h2 = h * h;
C = sqrt (h2 - c2);
printf ("El cateto tiene un valor de: %f\n", C);
printf ("\nDesea continuar o salir.\n1. continuar 2. salir ");
scanf ("%d", &x);
if (x == 1)
{
hmal = continua;
}
else if (x == 2)
{
exit (0);
}
}
else if (x == 2)
{
printf ("Introduzca el valor del cateto opuesto: ");
scanf ("%lf", &c);
printf ("Introduzca el valor del cateto adyacente: ");
scanf ("%lf", &C);
c2 = c * c;
C2 = C * C;
h = sqrt (C2 + c2);
printf ("El valor de la hipotenusa es: %f\n", h);
printf ("\nDesea continuar o salir.\n1. continuar 2. salir ");
scanf ("%d", &x);
if (x == 1)
{
hmal = continua;
}
else if (x == 2)
{
exit (0);
}
}
else if (x == 3)
{
return 0;
}
else
{
printf ("Error, opción no definida.\n");
}
}
return 0;
}
leo@lein:~/Escritorio/c_proyect$
/************************************
* Solución al Teorema de Pitágoras *
************************************
* Creado por STANHMAL *
************************************/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
enum stan
{ continua };
int
main ()
{
int x;
double c, c2, C, C2, h, h2;
enum stan hmal;
printf ("\n **************************************\n");
printf (" * Solución al Teorema de Pitágoras *\n");
printf (" **************************************\n\n");
hmal = continua;
while (hmal == continua)
{
printf ("\n1. Para hallar un cateto.\n");
printf ("2. Para hallar la hipotenusa.\n3. Para salir.\n");
printf ("Opción escogida: ");
scanf ("%d", &x);
if (x == 1)
{
printf ("Introduzca el valor de un cateto: ");
scanf ("%lf", &c);
printf ("Introduzca el valor de la hipotenusa: ");
scanf ("%lf", &h);
c2 = c * c;
h2 = h * h;
C = sqrt (h2 - c2);
printf ("El cateto tiene un valor de: %f\n", C);
printf ("\nDesea continuar o salir.\n1. continuar 2. salir ");
scanf ("%d", &x);
if (x == 1)
{
hmal = continua;
}
else if (x == 2)
{
exit (0);
}
}
else if (x == 2)
{
printf ("Introduzca el valor del cateto opuesto: ");
scanf ("%lf", &c);
printf ("Introduzca el valor del cateto adyacente: ");
scanf ("%lf", &C);
c2 = c * c;
C2 = C * C;
h = sqrt (C2 + c2);
printf ("El valor de la hipotenusa es: %f\n", h);
printf ("\nDesea continuar o salir.\n1. continuar 2. salir ");
scanf ("%d", &x);
if (x == 1)
{
hmal = continua;
}
else if (x == 2)
{
exit (0);
}
}
else if (x == 3)
{
return 0;
}
else
{
printf ("Error, opción no definida.\n");
}
}
return 0;
}
leo@lein:~/Escritorio/c_proyect$
Compilar, ejecutar y checar el estado de error:
Código:
leo@lein:~/Escritorio/c_proyect$ gcc code.c -o code -lm
leo@lein:~/Escritorio/c_proyect$
leo@lein:~/Escritorio/c_proyect$ ./code ; echo -e "Error : $?"
**************************************
* Solución al Teorema de Pitágoras *
**************************************
1. Para hallar un cateto.
2. Para hallar la hipotenusa.
3. Para salir.
Opción escogida: 3
Error : 0
leo@lein:~/Escritorio/c_proyect$
El return hace su trabajo.leo@lein:~/Escritorio/c_proyect$
leo@lein:~/Escritorio/c_proyect$ ./code ; echo -e "Error : $?"
**************************************
* Solución al Teorema de Pitágoras *
**************************************
1. Para hallar un cateto.
2. Para hallar la hipotenusa.
3. Para salir.
Opción escogida: 3
Error : 0
leo@lein:~/Escritorio/c_proyect$