Différences entre versions de « C algo td4 »
Ligne 264 : | 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> | ||
+ | #include <math.h> | ||
+ | |||
+ | int main(){ | ||
+ | int degre1, degre2, i; | ||
+ | double X; | ||
+ | /* Récupération des valeurs */ | ||
+ | printf("Veuillez specifier le degre du premier polynome: "); | ||
+ | scanf("%d", °re1); | ||
+ | degre1++; | ||
+ | double coefficients1[degre1]; | ||
+ | printf("Veuillez specifier le degre du second polynome: "); | ||
+ | scanf("%d", °re2); | ||
+ | degre2++; | ||
+ | double coefficients2[degre2]; | ||
+ | for (i = degre1; i > 0; i--) { | ||
+ | if(i > 1){ | ||
+ | printf("Veuillez specifier le coefficient de degre %d du premier polynome: ", i-1); | ||
+ | }else{ | ||
+ | printf("Veuillez specifier la constante du premier polynome: "); | ||
+ | } | ||
+ | scanf("%d", &coefficients1[i]); | ||
+ | } | ||
+ | for (i = degre2; i > 0; i--) { | ||
+ | if(i > 1){ | ||
+ | printf("Veuillez specifier le coefficient de degre %d du second polynome: ", i-1); | ||
+ | }else{ | ||
+ | printf("Veuillez specifier la constante du second polynome: "); | ||
+ | } | ||
+ | scanf("%d", &coefficients2[i]); | ||
+ | } | ||
+ | /* Affichage du polynome */ | ||
+ | printf("P1(X) = "); | ||
+ | for (i = degre1; i > 0; i--) { | ||
+ | printf("%d", coefficients1[i]); | ||
+ | if (i > 2) { | ||
+ | printf("X^%d + ",i-1); | ||
+ | }else if (i == 2) { | ||
+ | printf("X + "); | ||
+ | } | ||
+ | } | ||
+ | printf("\n"); | ||
+ | printf("P2(X) = "); | ||
+ | for (i = degre2; i > 0; i--) { | ||
+ | printf("%d", coefficients2[i]); | ||
+ | if (i > 2) { | ||
+ | printf("X^%d + ",i-1); | ||
+ | }else if (i == 2) { | ||
+ | printf("X + "); | ||
+ | } | ||
+ | } | ||
+ | printf("\n"); | ||
+ | printf("Entrez la valeur de X : "); | ||
+ | scanf("%lf", &X); | ||
+ | printf("P1(%d) + P2(%d) = ", X, X); | ||
+ | int maxDegre = degre1; | ||
+ | if(degre1 < degre2){ | ||
+ | int maxDegre = degre2; | ||
+ | } | ||
+ | double sumCoeff[maxDegre]; | ||
+ | for(i = maxDegre; i > 0; i--){ | ||
+ | if(degre1 >= i && degre2 >= i){ | ||
+ | sumCoeff[i] = pow(coefficients1[i] + coefficients2[i], X); | ||
+ | printf("%d\n", sumCoeff[i]); | ||
+ | }else if(degre1 >= i){ | ||
+ | sumCoeff[i] = pow(coefficients1[i], X); | ||
+ | }else if(degre2 >= i){ | ||
+ | sumCoeff[i] = pow(coefficients2[i], X); | ||
+ | } | ||
+ | } | ||
+ | float sum; | ||
+ | for (i = maxDegre; i > 0; i--) { | ||
+ | printf("%f", sumCoeff[i]); | ||
+ | sum += sumCoeff[i]; | ||
+ | if (i >= 2) { | ||
+ | printf(" + ",i-1); | ||
+ | } | ||
+ | } | ||
+ | printf(" = %d", sum); | ||
+ | return EXIT_SUCCESS;; | ||
+ | } | ||
</source> | </source> | ||
</div> | </div> |
Version du 19 mars 2014 à 16:16
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 degre1, degre2, i;
/* Récupération des valeurs */
printf("Veuillez specifier le degre du premier polynome: ");
scanf("%d", °re1);
degre1++;
int coefficients1[degre1];
printf("Veuillez specifier le degre du second polynome: ");
scanf("%d", °re2);
degre2++;
int coefficients2[degre2];
for (i = degre1; i > 0; i--) {
if(i > 1){
printf("Veuillez specifier le coefficient de degre %d du premier polynome: ", i-1);
}else{
printf("Veuillez specifier la constante du premier polynome: ");
}
scanf("%d", &coefficients1[i]);
}
for (i = degre2; i > 0; i--) {
if(i > 1){
printf("Veuillez specifier le coefficient de degre %d du second polynome: ", i-1);
}else{
printf("Veuillez specifier la constante du second polynome: ");
}
scanf("%d", &coefficients2[i]);
}
/* Affichage du polynome */
printf("P1(X) = ");
for (i = degre1; i > 0; i--) {
printf("%d", coefficients1[i]);
if (i > 2) {
printf("X^%d + ",i-1);
}else if (i == 2) {
printf("X + ");
}
}
printf("\n");
printf("P2(X) = ");
for (i = degre2; i > 0; i--) {
printf("%d", coefficients2[i]);
if (i > 2) {
printf("X^%d + ",i-1);
}else if (i == 2) {
printf("X + ");
}
}
printf("\n");
printf("P1(X) + P2(X) = ");
int maxDegre = degre1;
if(degre1 < degre2){
int maxDegre = degre2;
}
int sumCoeff[maxDegre];
for(i = maxDegre; i > 0; i--){
if(degre1 >= i && degre2 >= i){
sumCoeff[i] = coefficients1[i] + coefficients2[i];
}else if(degre1 >= i){
sumCoeff[i] = coefficients1[i];
}else if(degre2 >= i){
sumCoeff[i] = coefficients2[i];
}
}
for (i = maxDegre; i > 0; i--) {
printf("%d", sumCoeff[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 degré de votre deuxième polynome: 2 Veuillez spécifier le coefficient du degré 3 du premier polynome: 3 Veuillez spécifier le coefficient du degré 2 du premier polynome: 2 Veuillez spécifier le coefficient du degré 1 du premier polynome: 1 Veuillez spécifier le coefficient du degré 2 du deuxième polynome: 2 Veuillez spécifier le coefficient du degré 1 du deuxième polynome: 1 P1(X) = 3X^3 + 2X + 1 P2(X) = 2X + 1 P1(X) + P2(X) = 3X^3 + 4X + 2
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>
#include <math.h>
int main(){
int degre1, degre2, i;
double X;
/* Récupération des valeurs */
printf("Veuillez specifier le degre du premier polynome: ");
scanf("%d", °re1);
degre1++;
double coefficients1[degre1];
printf("Veuillez specifier le degre du second polynome: ");
scanf("%d", °re2);
degre2++;
double coefficients2[degre2];
for (i = degre1; i > 0; i--) {
if(i > 1){
printf("Veuillez specifier le coefficient de degre %d du premier polynome: ", i-1);
}else{
printf("Veuillez specifier la constante du premier polynome: ");
}
scanf("%d", &coefficients1[i]);
}
for (i = degre2; i > 0; i--) {
if(i > 1){
printf("Veuillez specifier le coefficient de degre %d du second polynome: ", i-1);
}else{
printf("Veuillez specifier la constante du second polynome: ");
}
scanf("%d", &coefficients2[i]);
}
/* Affichage du polynome */
printf("P1(X) = ");
for (i = degre1; i > 0; i--) {
printf("%d", coefficients1[i]);
if (i > 2) {
printf("X^%d + ",i-1);
}else if (i == 2) {
printf("X + ");
}
}
printf("\n");
printf("P2(X) = ");
for (i = degre2; i > 0; i--) {
printf("%d", coefficients2[i]);
if (i > 2) {
printf("X^%d + ",i-1);
}else if (i == 2) {
printf("X + ");
}
}
printf("\n");
printf("Entrez la valeur de X : ");
scanf("%lf", &X);
printf("P1(%d) + P2(%d) = ", X, X);
int maxDegre = degre1;
if(degre1 < degre2){
int maxDegre = degre2;
}
double sumCoeff[maxDegre];
for(i = maxDegre; i > 0; i--){
if(degre1 >= i && degre2 >= i){
sumCoeff[i] = pow(coefficients1[i] + coefficients2[i], X);
printf("%d\n", sumCoeff[i]);
}else if(degre1 >= i){
sumCoeff[i] = pow(coefficients1[i], X);
}else if(degre2 >= i){
sumCoeff[i] = pow(coefficients2[i], X);
}
}
float sum;
for (i = maxDegre; i > 0; i--) {
printf("%f", sumCoeff[i]);
sum += sumCoeff[i];
if (i >= 2) {
printf(" + ",i-1);
}
}
printf(" = %d", sum);
return EXIT_SUCCESS;;
}