Exercices corrigés - Python et Langage C - TD4

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

Saisir N - 3 Saisir une valeur - 10 Saisir une valeur - 11 Saisir une valeur - 12 le nombre le plus petit est 10 le nombre le plus grand est 12 la somme est 33 la moyenne est 11.000000

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

Saisir N 5
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

le 20eme terme de la suite est 131

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

Saisir N - 5
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 l'année - 2019
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 1 - 14
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 A - 45
Saisir B - 13
Saisir C - 15
voici les valeurs triées : 13 - 15 - 45

Rédigé par M. ESSADDOUKI

Many people realize their hearts desires late in life. Continue learning, never stop striving and keep your curiosity sharp, and you will never become too old to appreciate life.