4.5. Functia standard exit
2019/02/10 in Programare in C
Instructiunea exit are prototipul:
void exit(int cod)
si se afla in fisierele de tip .h: stdlib.h si process.h.
La apelul acestei functii au loc urmatoarele actiuni:
- se videaza zonele tampon (bufferele) ale fisierelor deschise in scriere;
- se inchid toate fisierele deschise;
- se intrerupe executia programului.
Parametrul acestei functii defineste starea programului la momentul apelului.
Valoarea zero defineste o terminare normala a executiei programului, iar o valoare diferita de zero semnaleaza prezenta unei erori (terminarea anormala a executiei programului).
In concluzie, putem apela functia exit pentru a termina executia unui program, indiferent de faptul ca acesta se termina normal sau din cauza unei erori.
Exercitiu:
4.8. Sa se modifice Programul 060 in asa fel incat el sa nu mai contina instructiuni if imbricate.
- Programul 061 - Ecuatia de gradul doi cu if si exit
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main()
{
double a, b, c, d, delta;
printf("coeficientul lui x patrat:", &a);
if (scanf("%lf", &a) != 1) {
printf ("coeficientul lui x patrat eronat\n");
exit(1);
}
printf("coeficientul lui x:", &b);
if (scanf("%lf", &b) != 1) {
printf ("coeficientul lui x eronat\n");
exit(1);
}
printf("termenul liber:", &c);
if (scanf("%lf", &c) != 1) {
printf ("termenul liber eronat\n");
exit(1);
}
printf("a = %g\tb = %g\t c = %g\n", a, b, c);
if (a == 0 && b == 0 && c == 0) {
printf ("ecuatie nedeterminata\n");
exit(0);
}
if (a == 0 && b == 0) {
printf ("ecuatia nu are solutie\n");
exit(0);
}
if (a == 0) {
printf ("ecuatie de gradul 1\n");
printf ("x = %g\n", -c / b);
exit(0);
}
delta = b*b - 4*a*c;
d = 2*a;
if (delta > 0) {
printf ("ecuatia are doua radacini reale si distincte\n");
delta = sqrt(delta);
printf ("x1 = %g\tx2 = %g\n", (-b + delta)/d, (-b - delta)/d);
exit(0);
}
if (delta == 0) {
printf ("ecuatia are radacina dubla\n");
printf ("x = %g\n", -b / d);
exit(0);
}
printf ("radacini complexe\n");
delta = sqrt(-delta);
d = -b / d;
printf ("x1 = %g + i(%g)\n", d, delta);
printf ("x2 = %g - i(%g)\n", d, delta);
}