Différences entre versions de « C algo td4 »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
 
(29 versions intermédiaires par le même utilisateur non affichées)
Ligne 64 : Ligne 64 :
 
       printf("|\n");
 
       printf("|\n");
 
   }
 
   }
   return EXIT_SUCCESS;;
+
   return EXIT_SUCCESS;
 
}
 
}
 
</source>
 
</source>
 
</div>
 
</div>
 +
 
= Exercice 2 =
 
= Exercice 2 =
  
Ligne 86 : Ligne 87 :
 
#include <stdlib.h>
 
#include <stdlib.h>
  
int main(void) {
+
int main(){
int degre, i;
+
    int degre, i;
 
+
    /* Récupération des valeurs */
printf("Veuillez spécifier le degré de votre polynome: ");
+
    printf("Veuillez spécifier le degré de votre polynome: ");
scanf("%d", &degre);
+
    scanf("%d", &degre);
 
+
    degre++;
int coefficients[degre];
+
    int coefficients[degre];
 
+
    for (i = degre; i > 0; i--) {
for (i = 0; i < degre; ++i) {
+
        if(i > 1){
printf("Veuillez spécifier le coefficient du degré %d: ", degre-i);
+
            printf("Veuillez spécifier le coefficient de degré %d: ", i-1);
scanf("%d", &coefficients[i]);
+
        }else{
}
+
            printf("Veuillez spécifier la constante: ");
for (i = 0; i < degre; ++i) {
+
        }
printf("Le coefficient de degré %d vaut %d\n", degre-i, coefficients[i]);
+
        scanf("%d", &coefficients[i]);
}
+
    }
return EXIT_SUCCESS;;
+
    return EXIT_SUCCESS;
 
}
 
}
 
</source>
 
</source>
 
</div>
 
</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>
 +
 
== Question 2 ==
 
== Question 2 ==
 
Ajouter des instructions permettant l’affichage à l’écran un polynôme de degré d.
 
Ajouter des instructions permettant l’affichage à l’écran un polynôme de degré d.
Ligne 110 : Ligne 120 :
 
<big>Afficher la solution:</big>
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
<source class="mw-collapsible-content" lang="c">
 +
#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;;
 +
}
 
</source>
 
</source>
 
</div>
 
</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 ==
 
== Question 3 ==
 
Ajouter des instructions permettant d’effectuer la somme de deux polynômes de degrés au plus d.
 
Ajouter des instructions permettant d’effectuer la somme de deux polynômes de degrés au plus d.
Ligne 117 : Ligne 167 :
 
<big>Afficher la solution:</big>
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
<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++){
 +
        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;
 +
}
 
</source>
 
</source>
 
</div>
 
</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>
 +
 
== Question 4 ==
 
== Question 4 ==
 
Ajouter des instructions permettant d’évaluer un polynôme pour une valeur x particulière.
 
Ajouter des instructions permettant d’évaluer un polynôme pour une valeur x particulière.
Ligne 124 : Ligne 264 :
 
<big>Afficher la solution:</big>
 
<big>Afficher la solution:</big>
 
<source class="mw-collapsible-content" lang="c">
 
<source class="mw-collapsible-content" lang="c">
 +
#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;;
 +
}
 
</source>
 
</source>
 
</div>
 
</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