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:

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.

#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);
}

4.6. Instructiunea while