Différences entre versions de « C algo td4 »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
 
(32 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
<source lang="c">
+
= Exercice 1 =
 +
Une matrice de Toeplitz (du nom du mathématicien allemand Otto Toeplitz 1881-1940) est une matrice dont les coefficients sur une diagonale descendant de gauche à droite sont les mêmes.
 +
 
 +
Par exemple, la matrice suivante est une matrice de Toeplitz :
 +
<center><math>A=\begin{pmatrix}
 +
0 &1 & 2 & 3 & 4\\
 +
5 & 0 & 1 & 2 & 3\\
 +
6 & 5 & 0 & 1 & 2\\
 +
7 & 6 & 5 & 0 & 1\\
 +
\end{pmatrix}</math></center>
 +
 
 +
On souhaite écrire un programme qui permette de créer et d’afficher des matrices de Toeplitz. Ce programme devra effectuer les opérations suivantes :
 +
*Demander à l’utilisateur la saisie d’un nombre de lignes et d’un nombre de colonnes ;
 +
*Demander à l’utilisateur la saisie d’une séquence d’initialisation ;
 +
*Générer la matrice correspondante ;
 +
*Afficher cette matrice.
 +
 
 +
Faire une analyse du sujet en décrivant les fonctionnalités du programme en langage naturel ou sous forme d’algorigramme et écrivez le en ''C''.
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 +
<big>Afficher la solution:</big>
 +
<source class="mw-collapsible-content" lang="c">
 +
#include <stdio.h>
 +
#include <stdlib.h>
 +
 
 +
int main(void) {
 +
  int ligne, colonne, i, j;
 +
  /* Récupération des paramètres de la matrice */
 +
  printf("Combien de lignes : ");
 +
  scanf("%d", &ligne);
 +
  printf("Combien de colonnes : ");
 +
  scanf("%d", &colonne);
 +
  /* Déduction des paramètres de la séquence d'initialisation */
 +
  int seq_size = ligne + colonne - 1, sequence[seq_size];
 +
  int mat[ligne][colonne];
 +
  printf("\n");
 +
  for (i = 0; i < seq_size; i++) {
 +
      printf("Rentrez la valeur de l'index %d : ", i + 1);
 +
      scanf("%d", &sequence[i]);
 +
  }
 +
  /* Construction de la matrice */
 +
  for (i = 0; i < ligne; i++) {
 +
      for (j = 0; j < colonne; j++) {
 +
        if (i == 0) {
 +
            mat[i][j] = sequence[j];
 +
        } else {
 +
            if (j == 0) {
 +
              mat[i][j] = sequence[colonne + i - 1];
 +
            } else {
 +
              mat[i][j] = mat[i - 1][j - 1];
 +
            }
 +
        }
 +
      }
 +
  }
 +
  /* Affichage de la matrice */
 +
  for (i = 0; i < ligne; i++) {
 +
      printf("|");
 +
      for (j = 0; j < colonne; j++) {
 +
        printf("%d", mat[i][j]);
 +
        if (j < colonne - 1) {
 +
            printf(",");
 +
        }
 +
      }
 +
      printf("|\n");
 +
  }
 +
  return EXIT_SUCCESS;
 +
}
 +
</source>
 +
</div>
 +
 
 +
= Exercice 2 =
 +
 
 +
Écrire un programme permettant de manipuler des polynômes. Un polynôme de degré d peut s’écrire sous la forme :
 +
 
 +
<center>
 +
<math>P(X) = c_0.X^0 + c_1.X^1 + c_2.X^2 + \cdots + c_d.X^d \,</math>
 +
</center>
 +
 
 +
On limitera le degré de nos polynômes à la valeur 10 et nous considérerons seulement les polynômes dans <math>\N</math>.
 +
 
 +
== Question 1 ==
 +
Écrire un programme permettant la saisie des coefficients d’un polynôme de degré d.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 +
<big>Afficher la solution:</big>
 +
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdio.h>
 +
#include <stdlib.h>
 +
 +
int main(){
 +
    int degre, i;
 +
    /* Récupération des valeurs */
 +
    printf("Veuillez spécifier le degré de votre polynome: ");
 +
    scanf("%d", &degre);
 +
    degre++;
 +
    int coefficients[degre];
 +
    for (i = degre; i > 0; i--) {
 +
        if(i > 1){
 +
            printf("Veuillez spécifier le coefficient de degré %d: ", i-1);
 +
        }else{
 +
            printf("Veuillez spécifier la constante: ");
 +
        }
 +
        scanf("%d", &coefficients[i]);
 +
    }
 +
    return EXIT_SUCCESS;
 +
}
 +
</source>
 +
</div>
 +
=== Exécution ===
 +
<pre>
 +
Veuillez spécifier le degré de votre premier polynome: 3
 +
Veuillez spécifier le coefficient de degré 3 : 4
 +
Veuillez spécifier le coefficient de degré 2 : 3
 +
Veuillez spécifier le coefficient de degré 1 : 2
 +
Veuillez spécifier la constante: 1
 +
</pre>
  
int main()
+
== Question 2 ==
{
+
Ajouter des instructions permettant l’affichage à l’écran un polynôme de degré d.
     int ligne,colonne,i,j;
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
      
+
<big>Afficher la solution:</big>
     printf("Combien de lignes : "); //Le nombe de colonnes pour la matrice voulue
+
<source class="mw-collapsible-content" lang="c">
     scanf("%d", &ligne);
+
#include <stdio.h>
     printf("Combien de colonnes : "); //Le nombre de colonnes pour la matrice voulue
+
#include <stdlib.h>
    scanf("%d", &colonne);
+
 
      
+
int main(){
     int sqc=ligne+colonne-1, sequence[sqc];
+
     int degre, i;
     int mat[ligne][colonne];
+
     /* Récupération des valeurs */
      
+
     printf("Veuillez spécifier le degré de votre polynome: ");
     printf("\n");
+
     scanf("%d", &degre);
      
+
     degre++;
     for (i=0; i<sqc; i++) { //On connait le nombre de séquence c'est "sqc"
+
    int coefficients[degre];
         printf("Rentrez la valeur de l'index %d : ",i+1);
+
    for (i = degre; i > 0; i--) {
         scanf("%d", &sequence[i]); //On rentre les valeurs de la matrice
+
        if(i > 1){
 +
            printf("Veuillez spécifier le coefficient de degré %d: ", i-1);
 +
        }else{
 +
            printf("Veuillez spécifier la constante: ");
 +
        }
 +
        scanf("%d", &coefficients[i]);
 +
     }
 +
    /* Affichage du polynome */
 +
     printf("P(X) = ");
 +
    for (i = degre; i > 0; i--) {
 +
        printf("%d", coefficients[i]);
 +
        if (i > 2) {
 +
            printf("X^%d + ",i-1);
 +
        }else if (i == 2) {
 +
            printf("X + ");
 +
        }
 +
     }
 +
    return EXIT_SUCCESS;;
 +
}
 +
</source>
 +
</div>
 +
=== Exécution ===
 +
<pre>
 +
Veuillez spécifier le degré de votre premier polynome: 3
 +
Veuillez spécifier le coefficient de degré 3 : 4
 +
Veuillez spécifier le coefficient de degré 2 : 3
 +
Veuillez spécifier le coefficient de degré 1 : 2
 +
Veuillez spécifier la constante : 1
 +
P(X) = 4X^3 + 3X^2 + 2X + 1
 +
</pre>
 +
 
 +
== Question 3 ==
 +
Ajouter des instructions permettant d’effectuer la somme de deux polynômes de degrés au plus d.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 +
<big>Afficher la solution:</big>
 +
<source class="mw-collapsible-content" lang="c">
 +
#include <stdio.h>
 +
#include <stdlib.h>
 +
 
 +
int main(){
 +
    int nb_poly, i , j;
 +
     printf("Combien de polynomes voulez-vous additionner: ");
 +
     scanf("%d" , &nb_poly);
 +
     int degres_polys[nb_poly], degreMax = 0;
 +
     for(i = 0; i < nb_poly; i++){
 +
         printf(" Choisissez le degre du polynome %d : ", i+1);
 +
         scanf("%d" , &degres_polys[i]);
 +
        degres_polys[i]++;
 +
        if(degres_polys[i] > degreMax) {
 +
            degreMax = degres_polys[i];
 +
        }
 +
    }
 +
    int coefficients[nb_poly][degreMax];
 +
    int sum[degreMax];
 +
    for(i = 0; i <= degreMax; i++){
 +
        sum[i] = 0;
 
     }
 
     }
   
+
     for(i = 0; i < nb_poly; i++){
     for (i=0; i<ligne; i++) {
+
         if(degres_polys[i] < degreMax){
         for (j=0; j<colonne; j++) {
+
            for(j = degreMax; j > degres_polys[i]; j--){
             if (i==0) {
+
                coefficients[i][j] = 0;
                 mat[i][j]=sequence[j];
+
            }
            }else{
+
        }
                if(j == 0){
+
        for(j = degres_polys[i]; j > 0 ; j--){
                    mat[i][j]=sequence[colonne+i-1];
+
             if(j > 1){
                }else{
+
                printf("Veuillez entrer le coefficient de degre %d du polynome %d: ", j-1, i+1);
                    mat[i][j]=mat[i-1][j-1];
+
            }
 +
            else{
 +
                 printf("Veuillez entrer la constante du polynome %d : ", i+1);
 +
            }
 +
            scanf("%d", &coefficients[i][j]);
 +
            sum[j] += coefficients[i][j];
 +
        }
 +
        printf("\nPolynome P%d(X)= ", i);
 +
        for(j = degres_polys[i]; j > 0 ; j--){
 +
                        printf("%d", coefficients[i][j]);
 +
            if (j > 2) {
 +
                printf("X^%d", j - 1);
 +
            } else if (j == 2) {
 +
                printf("X");
 +
            }
 +
            if (j >= 2) {
 +
                if (coefficients[i][j] >= 0) {
 +
                    printf(" + ");
 +
                } else {
 +
                    printf(" ");
 
                 }
 
                 }
 
             }
 
             }
 
         }
 
         }
 +
        printf("\n\n");
 
     }
 
     }
     for (i=0; i<ligne; i++) {
+
    printf("\nLa somme des polynomes P%d(X)= ", nb_poly+1);
         printf("|");
+
     for(i = degreMax; i > 0 ; i--){
         for (j=0; j<colonne; j++) {
+
         printf("%d", sum[i]);
             printf("%d",mat[i][j]);
+
         if(i > 2){
            if (j<colonne-1) {
+
             printf("X^%d + ", i-1);
                printf(",");
+
        }
            }
+
        else if(i == 2){
 +
            printf("X + ");
 
         }
 
         }
        printf("|\n");
 
 
     }
 
     }
   
+
     return EXIT_SUCCESS;
   
 
     return 0;
 
 
}
 
}
 
</source>
 
</source>
 +
</div>
 +
 +
=== Exécution ===
 +
<pre>
 +
Combien de polynomes voulez-vous additionner: 2
 +
Choisissez le degre du polynome 1 : 2
 +
Choisissez le degre du polynome 2 : 3
 +
Veuillez entrer le coefficient de degre 2 du polynome 1: 3
 +
Veuillez entrer le coefficient de degre 1 du polynome 1: 2
 +
Veuillez entrer la constante du polynome 1 : 1
 +
 +
Polynome P0(X)= 3X^2 + 2X + 1
 +
 +
Veuillez entrer le coefficient de degre 3 du polynome 2: -4
 +
Veuillez entrer le coefficient de degre 2 du polynome 2: -5
 +
Veuillez entrer le coefficient de degre 1 du polynome 2: -6
 +
Veuillez entrer la constante du polynome 2 : -7
 +
 +
Polynome P1(X)= -4X^3 -5X^2 -6X -7
 +
 +
 +
La somme des polynomes P3(X)= -4X^3 + -2X^2 + -4X + -6
 +
</pre>
  
<source lang="c">
+
== Question 4 ==
 +
Ajouter des instructions permettant d’évaluer un polynôme pour une valeur x particulière.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 +
<big>Afficher la solution:</big>
 +
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdio.h>
#include <string.h>
+
#include <stdlib.h>
  
int main(int argc, const char * argv[])
+
int main()
 
{
 
{
     int degre,i;
+
     int nb_poly, i , j;
     char poly[50];
+
    double X = 0, result = 0;
      
+
     printf("Combien de polynomes voulez-vous additionner: ");
    printf("Quel degre : ");
+
    scanf("%d" , &nb_poly);
    scanf("%d", &degre);
+
    int degres_polys[nb_poly], degreMax = 0;
      
+
     for(i = 0; i < nb_poly; i++){
     int coef[degre];
+
        printf(" Choisissez le degre du polynome %d : ", i+1);
      
+
        scanf("%d" , &degres_polys[i]);
     printf("\n");
+
        degres_polys[i]++;
      
+
        if(degres_polys[i] > degreMax) {
     for (i=0; i<degre; i++) {
+
            degreMax = degres_polys[i];
         printf("Rentrez la valeur du coefficient %d : ",i+1);
+
        }
        scanf("%d", &coef[i]);
+
     }
         sprintf(poly, "X^%d", coef[i]);
+
     int coefficients[nb_poly][degreMax];
         if (i < degre-1) {
+
     int sum[degreMax];
            strcat(poly, "X");
+
     for(i = 0; i <= degreMax; i++){
             strcat(poly, " + ");
+
        sum[i] = 0;
         }else if (i != degre){
+
     }
             sprintf(poly, "X^%d", degre-i);
+
     for(i = 0; i < nb_poly; i++){
             strcat(poly, " + ");
+
         if(degres_polys[i] < degreMax){
 +
            for(j = degreMax; j > degres_polys[i]; j--){
 +
                coefficients[i][j] = 0;
 +
            }
 +
        }
 +
        for(j = degres_polys[i]; j > 0 ; j--){
 +
            if(j > 1){
 +
                printf("Veuillez entrer le coefficient de degre %d du polynome %d: ", j-1, i+1);
 +
            }
 +
            else{
 +
                printf("Veuillez entrer la constante du polynome %d : ", i+1);
 +
            }
 +
            scanf("%d", &coefficients[i][j]);
 +
            sum[j] += coefficients[i][j];
 +
        }
 +
        printf("\nPolynome P%d(X)= ", i);
 +
         for(j = degres_polys[i]; j > 0 ; j--){
 +
            printf("%d", coefficients[i][j]);
 +
            if (j > 2) {
 +
                printf("X^%d", j - 1);
 +
            } else if (j == 2) {
 +
                printf("X");
 +
            }
 +
            if (j >= 2) {
 +
                if (coefficients[i][j] >= 0) {
 +
                    printf(" + ");
 +
                } else {
 +
                    printf(" ");
 +
                }
 +
            }
 +
        }
 +
         printf("\n\n");
 +
    }
 +
    printf("\nLa somme des polynomes P%d(X)= ", nb_poly+1);
 +
    for(i = degreMax; i > 0 ; i--){
 +
        printf("%d", sum[i]);
 +
        if(i > 2){
 +
             printf("X^%d + ", i-1);
 +
         }
 +
        else if(i == 2){
 +
             printf("X + ");
 +
        }
 +
    }
 +
    printf("\n\nChoisissez une valeur pour X: ");
 +
    scanf("%lf", &X);
 +
    printf("\nLa somme des polynomes P%d(X)= ", nb_poly+1);
 +
    for(i = degreMax; i > 0 ; i--){
 +
        if(i > 2){
 +
             result += sum[i] * pow(X, i-1);
 +
        }
 +
        else if(i == 2){
 +
            result += (sum[i] * X);
 +
        }
 +
        else{
 +
            result += sum[i];
 
         }
 
         }
 
     }
 
     }
      
+
     int int_result = result;
     printf("%s", poly);
+
     printf("%d", int_result);
   
+
     return EXIT_SUCCESS;;
     return 0;
 
 
}
 
}
 
</source>
 
</source>
 +
</div>
 +
 +
=== Exécution ===
 +
<pre>
 +
Combien de polynomes voulez-vous additionner: 2
 +
Choisissez le degre du polynome 1 : 2
 +
Choisissez le degre du polynome 2 : 3
 +
Veuillez entrer le coefficient de degre 2 du polynome 1: 3
 +
Veuillez entrer le coefficient de degre 1 du polynome 1: 2
 +
Veuillez entrer la constante du polynome 1 : 1
 +
 +
Polynome P0(X)= 3X^2 + 2X + 1
 +
 +
Veuillez entrer le coefficient de degre 3 du polynome 2: -4
 +
Veuillez entrer le coefficient de degre 2 du polynome 2: -5
 +
Veuillez entrer le coefficient de degre 1 du polynome 2: -6
 +
Veuillez entrer la constante du polynome 2 : -7
 +
 +
Polynome P1(X)= -4X^3 -5X^2 -6X -7
 +
 +
 +
La somme des polynomes P3(X)= -4X^3 + -2X^2 + -4X + -6
 +
 +
Choisissez une valeur pour X: 2
 +
 +
La somme des polynomes P3(X)= -54
 +
</pre>

Version actuelle datée du 19 septembre 2018 à 09:59

Exercice 1

Une matrice de Toeplitz (du nom du mathématicien allemand Otto Toeplitz 1881-1940) est une matrice dont les coefficients sur une diagonale descendant de gauche à droite sont les mêmes.

Par exemple, la matrice suivante est une matrice de Toeplitz :

On souhaite écrire un programme qui permette de créer et d’afficher des matrices de Toeplitz. Ce programme devra effectuer les opérations suivantes :

  • Demander à l’utilisateur la saisie d’un nombre de lignes et d’un nombre de colonnes ;
  • Demander à l’utilisateur la saisie d’une séquence d’initialisation ;
  • Générer la matrice correspondante ;
  • Afficher cette matrice.

Faire une analyse du sujet en décrivant les fonctionnalités du programme en langage naturel ou sous forme d’algorigramme et écrivez le en C.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
   int ligne, colonne, i, j;
   /* Récupération des paramètres de la matrice */
   printf("Combien de lignes : ");
   scanf("%d", &ligne);
   printf("Combien de colonnes : ");
   scanf("%d", &colonne);
   /* Déduction des paramètres de la séquence d'initialisation */
   int seq_size = ligne + colonne - 1, sequence[seq_size];
   int mat[ligne][colonne];
   printf("\n");
   for (i = 0; i < seq_size; i++) {
      printf("Rentrez la valeur de l'index %d : ", i + 1);
      scanf("%d", &sequence[i]);
   }
   /* Construction de la matrice */
   for (i = 0; i < ligne; i++) {
      for (j = 0; j < colonne; j++) {
         if (i == 0) {
            mat[i][j] = sequence[j];
         } else {
            if (j == 0) {
               mat[i][j] = sequence[colonne + i - 1];
            } else {
               mat[i][j] = mat[i - 1][j - 1];
            }
         }
      }
   }
   /* Affichage de la matrice */
   for (i = 0; i < ligne; i++) {
      printf("|");
      for (j = 0; j < colonne; j++) {
         printf("%d", mat[i][j]);
         if (j < colonne - 1) {
            printf(",");
         }
      }
      printf("|\n");
   }
   return EXIT_SUCCESS;
}

Exercice 2

Écrire un programme permettant de manipuler des polynômes. Un polynôme de degré d peut s’écrire sous la forme :

On limitera le degré de nos polynômes à la valeur 10 et nous considérerons seulement les polynômes dans .

Question 1

Écrire un programme permettant la saisie des coefficients d’un polynôme de degré d.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main(){
    int degre, i;
    /* Récupération des valeurs */
    printf("Veuillez spécifier le degré de votre polynome: ");
    scanf("%d", &degre);
    degre++;
    int coefficients[degre];
    for (i = degre; i > 0; i--) {
        if(i > 1){
            printf("Veuillez spécifier le coefficient de degré %d: ", i-1);
        }else{
            printf("Veuillez spécifier la constante: ");
        }
        scanf("%d", &coefficients[i]);
    }
    return EXIT_SUCCESS;
}

Exécution

Veuillez spécifier le degré de votre premier polynome: 3
Veuillez spécifier le coefficient de degré 3 : 4
Veuillez spécifier le coefficient de degré 2 : 3
Veuillez spécifier le coefficient de degré 1 : 2
Veuillez spécifier la constante: 1

Question 2

Ajouter des instructions permettant l’affichage à l’écran un polynôme de degré d.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main(){
    int degre, i;
    /* Récupération des valeurs */
    printf("Veuillez spécifier le degré de votre polynome: ");
    scanf("%d", &degre);
    degre++;
    int coefficients[degre];
    for (i = degre; i > 0; i--) {
        if(i > 1){
            printf("Veuillez spécifier le coefficient de degré %d: ", i-1);
        }else{
            printf("Veuillez spécifier la constante: ");
        }
        scanf("%d", &coefficients[i]);
    }
    /* Affichage du polynome */
    printf("P(X) = ");
    for (i = degre; i > 0; i--) {
        printf("%d", coefficients[i]);
        if (i > 2) {
            printf("X^%d + ",i-1);
        }else if (i == 2) {
            printf("X + ");
        }
    }
    return EXIT_SUCCESS;;
}

Exécution

Veuillez spécifier le degré de votre premier polynome: 3
Veuillez spécifier le coefficient de degré 3 : 4
Veuillez spécifier le coefficient de degré 2 : 3
Veuillez spécifier le coefficient de degré 1 : 2
Veuillez spécifier la constante : 1
P(X) = 4X^3 + 3X^2 + 2X + 1

Question 3

Ajouter des instructions permettant d’effectuer la somme de deux polynômes de degrés au plus d.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main(){
    int nb_poly, i , j;
    printf("Combien de polynomes voulez-vous additionner: ");
    scanf("%d" , &nb_poly);
    int degres_polys[nb_poly], degreMax = 0;
    for(i = 0; i < nb_poly; i++){
        printf(" Choisissez le degre du polynome %d : ", i+1);
        scanf("%d" , &degres_polys[i]);
        degres_polys[i]++;
        if(degres_polys[i] > degreMax) {
            degreMax = degres_polys[i];
        }
    }
    int coefficients[nb_poly][degreMax];
    int sum[degreMax];
    for(i = 0; i <= degreMax; i++){
        sum[i] = 0;
    }
    for(i = 0; i < nb_poly; i++){
        if(degres_polys[i] < degreMax){
            for(j = degreMax; j > degres_polys[i]; j--){
                coefficients[i][j] = 0;
            }
        }
        for(j = degres_polys[i]; j > 0 ; j--){
            if(j > 1){
                printf("Veuillez entrer le coefficient de degre %d du polynome %d: ", j-1, i+1);
            }
            else{
                printf("Veuillez entrer la constante du polynome %d : ", i+1);
            }
            scanf("%d", &coefficients[i][j]);
            sum[j] += coefficients[i][j];
        }
        printf("\nPolynome P%d(X)= ", i);
        for(j = degres_polys[i]; j > 0 ; j--){
                        printf("%d", coefficients[i][j]);
            if (j > 2) {
                printf("X^%d", j - 1);
            } else if (j == 2) {
                printf("X");
            }
            if (j >= 2) {
                if (coefficients[i][j] >= 0) {
                    printf(" + ");
                } else {
                    printf(" ");
                }
            }
        }
        printf("\n\n");
    }
    printf("\nLa somme des polynomes P%d(X)= ", nb_poly+1);
    for(i = degreMax; i > 0 ; i--){
        printf("%d", sum[i]);
        if(i > 2){
            printf("X^%d + ", i-1);
        }
        else if(i == 2){
            printf("X + ");
        }
    }
    return EXIT_SUCCESS;
}

Exécution

Combien de polynomes voulez-vous additionner: 2
 Choisissez le degre du polynome 1 : 2
 Choisissez le degre du polynome 2 : 3
Veuillez entrer le coefficient de degre 2 du polynome 1: 3
Veuillez entrer le coefficient de degre 1 du polynome 1: 2
Veuillez entrer la constante du polynome 1 : 1

Polynome P0(X)= 3X^2 + 2X + 1

Veuillez entrer le coefficient de degre 3 du polynome 2: -4
Veuillez entrer le coefficient de degre 2 du polynome 2: -5
Veuillez entrer le coefficient de degre 1 du polynome 2: -6
Veuillez entrer la constante du polynome 2 : -7

Polynome P1(X)= -4X^3 -5X^2 -6X -7


La somme des polynomes P3(X)= -4X^3 + -2X^2 + -4X + -6

Question 4

Ajouter des instructions permettant d’évaluer un polynôme pour une valeur x particulière.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int nb_poly, i , j;
    double X = 0, result = 0;
    printf("Combien de polynomes voulez-vous additionner: ");
    scanf("%d" , &nb_poly);
    int degres_polys[nb_poly], degreMax = 0;
    for(i = 0; i < nb_poly; i++){
        printf(" Choisissez le degre du polynome %d : ", i+1);
        scanf("%d" , &degres_polys[i]);
        degres_polys[i]++;
        if(degres_polys[i] > degreMax) {
            degreMax = degres_polys[i];
        }
    }
    int coefficients[nb_poly][degreMax];
    int sum[degreMax];
    for(i = 0; i <= degreMax; i++){
        sum[i] = 0;
    }
    for(i = 0; i < nb_poly; i++){
        if(degres_polys[i] < degreMax){
            for(j = degreMax; j > degres_polys[i]; j--){
                coefficients[i][j] = 0;
            }
        }
        for(j = degres_polys[i]; j > 0 ; j--){
            if(j > 1){
                printf("Veuillez entrer le coefficient de degre %d du polynome %d: ", j-1, i+1);
            }
            else{
                printf("Veuillez entrer la constante du polynome %d : ", i+1);
            }
            scanf("%d", &coefficients[i][j]);
            sum[j] += coefficients[i][j];
        }
        printf("\nPolynome P%d(X)= ", i);
        for(j = degres_polys[i]; j > 0 ; j--){
            printf("%d", coefficients[i][j]);
            if (j > 2) {
                printf("X^%d", j - 1);
            } else if (j == 2) {
                printf("X");
            }
            if (j >= 2) {
                if (coefficients[i][j] >= 0) {
                    printf(" + ");
                } else {
                    printf(" ");
                }
            }
        }
        printf("\n\n");
    }
    printf("\nLa somme des polynomes P%d(X)= ", nb_poly+1);
    for(i = degreMax; i > 0 ; i--){
        printf("%d", sum[i]);
        if(i > 2){
            printf("X^%d + ", i-1);
        }
        else if(i == 2){
            printf("X + ");
        }
    }
    printf("\n\nChoisissez une valeur pour X: ");
    scanf("%lf", &X);
    printf("\nLa somme des polynomes P%d(X)= ", nb_poly+1);
    for(i = degreMax; i > 0 ; i--){
        if(i > 2){
            result += sum[i] * pow(X, i-1);
        }
        else if(i == 2){
            result += (sum[i] * X);
        }
        else{
            result += sum[i];
        }
    }
    int int_result = result;
    printf("%d", int_result);
    return EXIT_SUCCESS;;
}

Exécution

Combien de polynomes voulez-vous additionner: 2
 Choisissez le degre du polynome 1 : 2
 Choisissez le degre du polynome 2 : 3
Veuillez entrer le coefficient de degre 2 du polynome 1: 3
Veuillez entrer le coefficient de degre 1 du polynome 1: 2
Veuillez entrer la constante du polynome 1 : 1

Polynome P0(X)= 3X^2 + 2X + 1

Veuillez entrer le coefficient de degre 3 du polynome 2: -4
Veuillez entrer le coefficient de degre 2 du polynome 2: -5
Veuillez entrer le coefficient de degre 1 du polynome 2: -6
Veuillez entrer la constante du polynome 2 : -7

Polynome P1(X)= -4X^3 -5X^2 -6X -7


La somme des polynomes P3(X)= -4X^3 + -2X^2 + -4X + -6

Choisissez une valeur pour X: 2

La somme des polynomes P3(X)= -54