Exercices corrigés - Python et Langage C - TD4
Exercice 1
Ecrire un programme qui permet de saisir une série de nombres entiers positifs et qui après saisie, affiche les valeurs du plus petit et du plus grand nombre saisi ainsi que la somme et la moyenne des nombres.
Solution :
#include <stdio.h> int main(void) { int N, Petit, Grand, S, val; printf("Saisir N - "); scanf("%d", &N); S = 0; Petit = 34234234; Grand = -1; for (int i = 0; i < N; i++) { printf("Saisir une valeur - "); scanf("%d", &val); S += val; if (i == 0) { Petit = val; Grand = val; } else { if (val > Grand) Grand = val; if (val < Petit) Petit = val; } } printf("le nombre le plus petit est %d \n", Petit); printf("le nombre le plus grand est %d\n", Grand); printf("la somme est %d\n", S); printf("la moyenne est %f\n", (float)S / N); return 0; }
N=int(input("Saisir N ")) S=0 Petit=34234234 Grand=-1 for i in range(N): Nb=int(input("saisir un nombre: ")) S+=Nb if i==0: Petit=Nb Grand=Nb else: if Nb>Grand: Grand=Nb if Nb<Petit: Petit=Nb print("le nombre le plus petit est ",Petit) print("le nombre le plus grand est ",Grand) print("la somme est ",S) print("la moyenne est ",S/N)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Exercice 2
Ecrire un programme qui permet de calculer S1, S2, S3 et S4 tel que:
S1 = 1 + 1/2 + 1/3 + ... + 1/N
S2 = 1 + 1/2 + 1/4 + ... + 1/(2N)
S3 = 1 - 1/2 + 1/4 - ... + 1/(2N)
S4 = 1 +x + x^2 + ... + x^N
Solution :
#include <stdio.h> #include <math.h> int main(void) { int N, sign, i; float S1 = 1, S2 = 1, S3 = 1, S4 = 1, x; printf("Saisir N - "); scanf("%d", &N); for (int i = 2; i < N + 1; i++) S1 += 1.0 / i; printf("la somme S1 est %f\n", S1); for (i = 2; i < 2 * N + 1; i += 2) { S2 += 1.0 / i; } printf("\nla somme S2 est %f\n", S2); sign = -1.0; for (i = 2; i < 2 * N + 1; i += 2) { S3 += sign * (1.0 / i); sign *= (-1); } printf("la somme S3 est %f \n", S3); printf("Saisir x - "); scanf("%f", &x); for (i = 1; i < N + 1; i++) S4 += pow(x, i); printf("la somme S4 est %f \n", S4); return 0; }
N = int(input("Saisir N ")) S1, S2, S3, S4, S5, S6 = 1, 1, 1, 1, 1, 1 for i in range(2, N+1): S1 += 1/i print("la somme S1 est ", S1) for i in range(2, 2*N+1, 2): S2 += 1/i print("la somme S2 est ", S2) signe = -1 for i in range(2, 2*N+1, 2): S3 += signe*(1/i) signe *= (-1) print("la somme S3 est ", S3) x = int(input("saisir x ")) for i in range(1, N+1): S4 += x**i print("la somme S4 est ", S4)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
la somme S1 est 2.283333333333333
la somme S2 est 2.141666666666667
la somme S3 est 0.6083333333333334
saisir x 3
la somme S4 est 364
Exercice 3
Ecrire un programme qui détermine le 20ième terme d'une suite définie par :
- S0 = 2
- S1 = 3
- Sn = Sn-1+(-1)^n * Sn-2
Solution :
#include <stdio.h> #include <math.h> int main(void) { int S0, S1, Sn, i; S0 = 2; S1 = 3; for (i = 2; i < 20; i++) { Sn = S1 + (pow((-1), i)) * S0; S0 = S1; S1 = Sn; } printf("le 20eme terme de la suite est %d", S1); return 0; }
S0=2 S1=3 for i in range(2,20): Sn=S1+((-1)**i)*S0 S0=S1 S1=Sn print("le 20eme terme de la suite est ",S1)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Exercice 4
Ecrire un programme qui détermine le Nième terme d'une suite(N est fourni par l'utilisateur) définie par :
- S0 = 2
- S1 = 3
- S2 = -2
- Sn = Sn-3+(-1)n * Sn-1
Solution :
#include <stdio.h> #include <math.h> int main(void) { int S0, S1, S2, Sn, N, i; printf("Saisir N - "); scanf("%d", &N); S0 = 2; S1 = 3; S2 = -2; for (i = 3; i < N; i++) { Sn = S0 + (pow((-1), i)) * S2; S0 = S1; S1 = S2; S2 = Sn; } printf("le %d ième terme de la suite est %d", N, S2); return 0; }
N = int(input("Saisir N - ")) S0 = 2 S1 = 3 S2 = -2 for i in range(3, N): Sn = S0+((-1)**i)*S2 S0 = S1 S1 = S2 S2 = Sn print("le ", N, "ieme terme de la suite est ", S2)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
le 5 ieme terme de la suite est 7
Exercice 5
Ecrire un programme qui à partir d'une date divisée en ses composantes (J, M, A) et affiche la date du lendemain. Tenir compte du cas ou la date saisie est la date du dernier jour du mois ou celle du dernier jour de l'année
Remarque : prendre 28 comme nombre de jours du mois de février.
Solution :
#include <stdio.h> int main(void) { int A, M, J; printf("Saisir l'année - "); scanf("%d", &A); printf("Saisir le mois - "); scanf("%d", &M); printf("Saisir le jour - "); scanf("%d", &J); if (M > 12 || J > 31) printf("la date est invalide"); else { if (M == 12) { if (J < 31) J += 1; else { J = 1; M = 1; A += 1; } } else if (M == 2) { if (J > 28) printf("jour invalide"); else if (J == 28) { J = 1; M += 1; } else J += 1; } else { if (M == 1 || M == 3 || M == 5 || M == 7 || M == 8 || M == 10) { if (J == 31) { J = 1; M += 1; } else J += 1; } else { if (J == 30) { J = 1; M += 1; } else J += 1; } } } printf("la date de lendemain est %d-%d-%d", A, M, J); return 0; }
A = int(input("saisir une annee :")) M = int(input("saisir le mois : ")) J = int(input("saisir le jour : ")) if M > 12 or J > 31: print("la date est invalide") else: if M == 12: if J < 31: J += 1 else: J = 1 M = 1 A += 1 elif M == 2: if J > 28: print("jour invalide") elif J == 28: J = 1 M += 1 else: J += 1 else: if M == 1 or M == 3 or M == 5 or M == 7 or M == 8 or M == 10: if J == 31: J = 1 M += 1 else: J += 1 else: if J == 30: J = 1 M += 1 else: J += 1 print("la date de lendemain est ", A, "-", M, "-", J)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Saisir le mois - 5
Saisir le jour - 31
la date de lendemain est 2019-6-1
Exercice 6
Pour calculer les moyens de ses étudiants, un professeur calcule deux moyennes ; la moyenne arithmétique et la moyenne de la mauvaise et la meilleure des notes de trois notes. Il choisira par la suite la meilleure des deux moyennes calculées.
Ecrire un programme qui saisit les trois notes d'un étudiant et affiche la moyenne finale accordée.
Exemple :
Si les trois notes d'un étudiant sont : 12, 8, 14 alors :
- Moyenne arithmétique=(12+8+14)/3 = 34/3 =11,34
- Moyenne de la mauvaise et de la meilleure : (14+8)/2=22/2=11
Le professeur choisira la première moyenne.
Solution :
#include <stdio.h> int main(void) { float N1, N2, N3, M1, M2; printf("Saisir la note 1 - "); scanf("%f", &N1); printf("Saisir la note 2 - "); scanf("%f", &N2); printf("Saisir la note 3 - "); scanf("%f", &N3); M1 = (N1 + N2 + N3) / 3; M2 = 0; if (((N1 <= N2) && (N2 <= N3)) || ((N3 <= N2) && (N2 <= N1))) M2 = (N1 + N3) / 2; else if (((N2 <= N1) && (N1 <= N3)) || ((N3 <= N1) && (N1 <= N2))) M2 = (N3 + N2) / 2; else M2 = (N1 + N2) / 2; if (M1 > M2) printf("la meilleure note est : %f", M1); else printf("la meilleure note est : %f", M2); return 0; }
N1 = float(input("saisir la premiere note :")) N2 = float(input("saisir la deuxieme note :")) N3 = float(input("saisir la troisieme note :")) M1 = (N1+N2+N3)/3 M2 = 0 if N1 <= N2 <= N3 or N3 <= N2 <= N1: M2 = (N1+N3)/2 elif N2 <= N1 <= N3 or N3 <= N1 <= N2: M2 = (N3+N2)/2 else: M2 = (N1+N2)/2 if M1 > M2: print("la meilleure note est : ", M1) else: print("la meilleure note est : ", M2)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Saisir la note 2 - 12
Saisir la note 3 - 17
la meilleure note est : 14.500000
Exercice 7
Ecrivez un programme qui lit trois valeurs entières (A, B et C) au clavier. Triez les valeurs A, B et C par échanges successifs de manière à obtenir A, B et C dans cette ordre. et affichez le le résultat.
Solution :
#include <stdio.h> int main(void) { int A, B, C, aux; printf("Saisir A - "); scanf("%d", &A); printf("Saisir B - "); scanf("%d", &B); printf("Saisir C - "); scanf("%d", &C); if (A <= C && C <= B) { aux = C; C = B; B = aux; } else if (B <= C && C <= A) { aux = A; A = B; B = C; C = aux; } else if (C <= A && A <= B) { aux = A; A = C; C = B; B = aux; } else if (B <= A && A <= C) { aux = A; A = B; B = aux; } else if (C <= B && B <= A) { aux = A; A = C; C = aux; } printf("voici les valeurs triées : %d - %d - %d", A, B, C); return 0; }
A = int(input("saisir A : ")) B = int(input("saisir B : ")) C = int(input("saisir C : ")) if A <= C <= B: A, B, C = A, C, B elif B <= C <= A: A, B, C = B, C, A elif C <= A <= B: A, B, C = C, A, B elif B <= A <= C: A, B, C = B, A, C elif C <= B <= A: A, B, C = C, B, A print("voici les valeurs triees : ", A, " ; ", B, " ; ", C)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Saisir B - 13
Saisir C - 15
voici les valeurs triées : 13 - 15 - 45