Exercice langage C corrigé les suites et fonctions mathématiques

#include 

            /* le polynôme P(X) = X^5 - X^4 + 2X^3 - 2X^2 + 3X - 3 */
float a[] = { 1, -1, 2, -2, 3, -3 };
            /* le degré de P (la taille de a est n + 1) */ 
int n = 5;

float x, xp, p;
int i;

int main() {
    for(;;) {
        printf("x ? ");
        scanf("%f", &x);
        if (x == 0 && xp == 0)
            break;
        xp = x;

        p = a[0];
        for (i = 1; i <= n; i++)
            p = p * x + a[i];

        printf("P(%f) = %f\n", x, p);
    }
}
C'est le très classique schéma de Hörner, qui permet d'évaluer un polynôme de degré n en ne faisant que n multiplications.

Afin de tester l'algorithme pour diverses valeurs de x nous l'avons entouré d'une boucle, mais nous n'avons pas de raison d'affirmer que telle valeur de x est invalide et marque la fin. Nous avons fait la convention suivante : si vous donnez la valeur 0 deux fois de suite (ou en premier) cela arrête le programme. Oui, c'est alambiqué ; vous avez une meilleure idée ?

Exercice 2

#include 

#define NL 5
#define NC 5

float A[NL][NC] = {
        { 21,  9, 16,  4, 25 },
        { 22, 15, 17, 15, 26 },
        { 23,  7, 18,  3, 27 },
        { 24, 15, 19, 15, 28 },
        { 24,  8, 20, 12, 29 } };
int tMin[NC], nMin, p, i, j, k;
float vMin;

int main() {

    for (p = 0; p < NL; p++) {

            /* calcul de l'ensemble des indices des minima de la ligne p */

        nMin = 1;
        tMin[0] = 0;
        vMin = A[p][0]; 
        for (j = 1; j < NC; j++)
            if (A[p][j] == vMin)
                tMin[nMin++] = j;
            else if (A[p][j] < vMin) {
                nMin = 1;
                tMin[0] = j;
                vMin = A[p][j]; 
            }

            /* de ces indices lesquels sont-ils maxima de leur colonne? */

        for (j = 0; j < nMin; j++) {

            k = tMin[j];
            for (i = 0; i < NL; i++)
                if (A[i][k] > vMin)
                    break;
            if (i >= NL)
                printf("(%d,%d) ", p, k);
        }
    }
    printf("\n");        
}

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *