Différences entre versions de « C algo td4 »
(Page créée avec « #include <stdio.h> #include <stdlib.h> int main() { int ligne, colonne, i, j; printf("Combien de lignes: "); scanf("%d", &ligne); printf("Combien de colon... ») |
|||
(37 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | = 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> | #include <stdlib.h> | ||
− | int main() { | + | int main(){ |
− | int | + | int degre, i; |
− | printf(" | + | /* Récupération des valeurs */ |
− | scanf("%d", & | + | printf("Veuillez spécifier le degré de votre polynome: "); |
− | printf(" | + | scanf("%d", °re); |
− | scanf("%d", & | + | degre++; |
− | + | int coefficients[degre]; | |
− | + | for (i = degre; i > 0; i--) { | |
− | + | if(i > 1){ | |
− | printf(" | + | printf("Veuillez spécifier le coefficient de degré %d: ", i-1); |
− | scanf("%d", & | + | }else{ |
− | + | printf("Veuillez spécifier la constante: "); | |
− | + | } | |
− | for( | + | scanf("%d", &coefficients[i]); |
− | + | } | |
− | + | return EXIT_SUCCESS; | |
− | }else{ | + | } |
− | + | </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> | ||
+ | |||
+ | == Question 2 == | ||
+ | Ajouter des instructions permettant l’affichage à l’écran 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 <stdlib.h> | ||
+ | |||
+ | int main(){ | ||
+ | int degre, i; | ||
+ | /* Récupération des valeurs */ | ||
+ | printf("Veuillez spécifier le degré de votre polynome: "); | ||
+ | scanf("%d", °re); | ||
+ | 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> | ||
+ | </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" , °res_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); | |
− | |||
} | } | ||
− | printf(" | + | else if(i == 2){ |
− | + | printf("X + "); | |
− | + | } | |
+ | } | ||
+ | return EXIT_SUCCESS; | ||
} | } | ||
+ | </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> | ||
+ | |||
+ | == 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 <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" , °res_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> | ||
+ | </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 à 08: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", °re);
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", °re);
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" , °res_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" , °res_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