1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
Welcome to our Education website, plz like our page facebook to support us. Thank You and wish you good navigation

TD Tableaux à deux dimensions - Matrices Langage C

abdelouafiFeb 6, 2018

   
    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      541
      Likes Received:
      10
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      TD Tableaux à deux dimensions - Matrices Langage C:

      Exercice 1:
      Ecrire un programme qui met à zéro les éléments de la diagonale principale d'une matrice carrée A donnée.

      Exercice 2:
      Ecrire un programme qui construit et affiche une matrice carrée unitaire U de dimension N. Une matrice unitaire est une matrice, telle que:

      uij = 1 si i=j , et uij = 0 si ij



      Exercice 3 Transposition d'une matrice


      Ecrire un programme qui effectue la transposition tA d'une matrice A de dimensions N et M en une matrice de dimensions M et N.

      a) La matrice transposée sera mémorisée dans une deuxième matrice B qui sera ensuite affichée.

      b) La matrice A sera transposée par permutation des éléments.

      Rappel:
      upload_2018-2-6_9-7-11.png

      Exercice 4 Multiplication d'une matrice par un réel


      Ecrire un programme qui réalise la multiplication d'une matrice A par un réel X.

      Rappel:
      upload_2018-2-6_9-7-57.png


      Exercice 5: Addition de deux matrices

      Ecrire un programme qui réalise l'addition de deux matrices A et B de mêmes dimensions N et M.

      Rappel:

      upload_2018-2-6_9-18-43.png

      a) Le résultat de l'addition sera mémorisé dans une troisième matrice C qui sera ensuite affichée.
      b) La matrice B est ajoutée à A.

      Exercice 6: Multiplication de deux matrices


      En multipliant une matrice A de dimensions N et M avec une matrice B de dimensions M et P on obtient une matrice C de dimensions N et P:



      A(N,M) * B(M,P) = C(N,P)


      La multiplication de deux matrices se fait en multipliant les composantes des deux matrices lignes par colonnes:

      [​IMG]

      Rappel:

      upload_2018-2-6_9-19-57.png



      Exercice 7: Triangle de Pascal

      Ecrire un programme qui construit le triangle de PASCAL de degré N et le mémorise dans une matrice carrée P de dimension N+1.

      Exemple: Triangle de Pascal de degré 6:

      upload_2018-2-6_9-26-44.png

      Méthode:

      Construire le triangle ligne par ligne:

      - Initialiser le premier élément et l'élément de la diagonale à 1.

      - Calculer les valeurs entre les éléments initialisés de gauche à droite en utilisant la relation:

      Pi,j = Pi-1,j + Pi-1,j-1
       
      Last edited: Feb 6, 2018
      Loading...
      Exercice 1:

      Code:
      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int A[50][50]; /* matrice carrée   */
      int N;         /* dimension de la matrice carrée */
      int I, J;      /* indices courants */
      
      /* Saisie des données */
      printf("Dimension de la matrice carrée (max.50) : ");
      scanf("%d", &N);
      for (I=0; I<N; I++)
          for (J=0; J<N; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &A[I][J]);
              }
      /* Affichage de la matrice */
      printf("Matrice donnée :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<N; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      
      /* Mise à zéro de la diagonale principale */
      for (I=0; I<N; I++)
            A[I][I]=0;
      /* Edition du résultat */
      printf("Matrice résultat :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<N; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      return 0;
      }

      Exercice 2:

      Code:
      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int U[50][50]; /* matrice unitaire */
      int N;         /* dimension de la matrice unitaire */
      int I, J;      /* indices courants */
      
      /* Saisie des données */
      printf("Dimension de la matrice carrée (max.50) : ");
      scanf("%d", &N);
      
      /* Construction de la matrice carrée unitaire */
      for (I=0; I<N; I++)
           for (J=0; J<N; J++)
               if (I==J)
                   U[I][J]=1;
               else
                   U[I][J]=0;
        /* Edition du résultat */
      printf("Matrice unitaire de dimension %d :\n", N);
      for (I=0; I<N; I++)
          {
           for (J=0; J<N; J++)
                printf("%7d", U[I][J]);
           printf("\n");
          }
      return 0;
      }

      Exercice 3: Transposition d'une matrice

      Code:
      a)    La matrice transposée sera mémorisée dans une deuxième matrice B qui sera ensuite affichée.
      
      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int A[50][50];  /* matrice initiale */
      int B[50][50];  /* matrice résultat */
      int N, M;       /* dimensions des matrices */
      int I, J;       /* indices courants */
      
      /* Saisie des données */
      printf("Nombre de lignes   (max.50) : ");
      scanf("%d", &N );
      printf("Nombre de colonnes (max.50) : ");
      scanf("%d", &M );
      for (I=0; I<N; I++)
          for (J=0; J<M; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &A[I][J]);
              }
      /* Affichage de la matrice */
      printf("Matrice donnée :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      /* Affectation de la matrice transposée à B */
      for (I=0; I<N; I++)
           for (J=0; J<M; J++)
                B[J][I]=A[I][J];
        /* Edition du résultat */
      /* Attention: maintenant le rôle de N et M est inversé. */
        printf("Matrice résultat :\n");
      for (I=0; I<M; I++)
          {
           for (J=0; J<N; J++)
                printf("%7d", B[I][J]);
           printf("\n");
          }
      return 0;
      }
      b)    La matrice A sera transposée par permutation des éléments.
      
      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int A[50][50];  /* matrice donnée           */
      int N, M;       /* dimensions de la matrice */
      int I, J;       /* indices courants         */
      int AIDE;       /* pour la permutation      */
      int DMAX;       /* la plus grande des deux dimensions */
      
      /* Saisie des données */
      printf("Nombre de lignes   (max.50) : ");
      scanf("%d", &N );
      printf("Nombre de colonnes (max.50) : ");
      scanf("%d", &M );
      for (I=0; I<N; I++)
          for (J=0; J<M; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &A[I][J]);
              }
      /* Affichage de la matrice */
      printf("Matrice donnée :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      /* Transposition de la matrice A par permutation des   */
      /* éléments [I][J] à gauche de la diagonale principale */
      /* avec les éléments [J][I] à droite de la diagonale.  */
      DMAX = (N>M) ? N : M;
      for (I=0; I<DMAX; I++)
           for (J=0; J<I; J++)
               {
                AIDE = A[I][J];
                A[I][J] = A[J][I];
                A[J][I] = AIDE;
               }
        /* Edition du résultat */
      /* Attention: maintenant le rôle de N et M est inversé. */
        printf("Matrice résultat :\n");
      for (I=0; I<M; I++)
          {
           for (J=0; J<N; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      return 0;
      }

      Exercice 4: Multiplication d'une matrice par un réel


      a) Le résultat de la multiplication sera mémorisé dans une deuxième matrice A qui sera ensuite affichée.



      #include <stdio.h>
      main()
      {
      /* Déclarations */
      float A[50][50]; /* matrice donnée */
      float B[50][50]; /* matrice résultat */
      int N, M; /* dimensions des matrices */
      int I, J; /* indices courants */
      float X; /* multiplicateur */
      /* Saisie des données */
      printf("Nombre de lignes (max.50) : ");
      scanf("%d", &N );
      printf("Nombre de colonnes (max.50) : ");
      scanf("%d", &M );
      for (I=0; I<N; I++)
      for (J=0; J<M; J++)
      {
      printf("Elément[%d][%d] : ",I,J);
      scanf("%f", &A[J]);
      }
      printf("Multiplicateur X : ");
      scanf("%f", &X );
      /* Affichage de la matrice */
      printf("Matrice donnée :\n");
      for (I=0; I<N; I++)
      {
      for (J=0; J<M; J++)
      printf("%10.2f", A[J]);
      printf("\n");
      }
      /* Affectation du résultat de la multiplication à B */
      for (I=0; I<N; I++)
      for (J=0; J<M; J++)
      B[J] = X*A[J];

      /* Edition du résultat */
      printf("Matrice résultat :\n");
      for (I=0; I<N; I++)
      {
      for (J=0; J<M; J++)
      printf("%10.2f", B[J]);
      printf("\n");
      }
      return 0;
      }
      b) Les éléments de la matrice A seront multipliés par X.



      #include <stdio.h>
      main()
      {
      /* Déclarations */
      float A[50][50]; /* matrice donnée */
      int N, M; /* dimensions de la matrice */
      int I, J; /* indices courants */
      float X; /* multiplicateur */

      /* Saisie des données */
      printf("Nombre de lignes (max.50) : ");
      scanf("%d", &N );
      printf("Nombre de colonnes (max.50) : ");
      scanf("%d", &M );
      for (I=0; I<N; I++)
      for (J=0; J<M; J++)
      {
      printf("Elément[%d][%d] : ",I,J);
      scanf("%f", &A[J]);
      }
      printf("Multiplicateur X : ");
      scanf("%f", &X);
      /* Affichage de la matrice */
      printf("Matrice donnée :\n");
      for (I=0; I<N; I++)
      {
      for (J=0; J<M; J++)
      printf("%10.2f", A[J]);
      printf("\n");
      }
      /* Multiplication des éléments de A par X */
      for (I=0; I<N; I++)
      for (J=0; J<M; J++)
      A[J] *= X;

      /* Edition du résultat */
      printf("Matrice résultat :\n");
      for (I=0; I<N; I++)
      {
      for (J=0; J<M; J++)
      printf("%10.2f", A[J]);
      printf("\n");
      }
      return 0;
      }

      Exercice 5: Addition de deux matrices

      Code:
      a)    Le résultat de l'addition sera mémorisé dans une troisième matrice C qui sera ensuite affichée.
      
      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int A[50][50]; /* matrice donnée   */
      int B[50][50]; /* matrice donnée   */
      int C[50][50]; /* matrice résultat */
      int N, M;      /* dimensions des matrices */
      int I, J;      /* indices courants */
      
      /* Saisie des données */
      printf("Nombre de lignes   (max.50) : ");
      scanf("%d", &N );
      printf("Nombre de colonnes (max.50) : ");
      scanf("%d", &M );
      printf("*** Matrice A ***\n");
      for (I=0; I<N; I++)
          for (J=0; J<M; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &A[I][J]);
              }
      printf("*** Matrice B ***\n");
      for (I=0; I<N; I++)
          for (J=0; J<M; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &B[I][J]);
              }
      /* Affichage des matrices */
      printf("Matrice donnée A :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      printf("Matrice donnée B :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", B[I][J]);
           printf("\n");
          }
      
      /* Affectation du résultat de l'addition à C */
      for (I=0; I<N; I++)
           for (J=0; J<M; J++)
                 C[I][J] = A[I][J]+B[I][J];
        /* Edition du résultat */
      printf("Matrice résultat C :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", C[I][J]);
           printf("\n");
          }
      return 0;
      }
      b) La matrice B est ajoutée à A.
      
      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int A[50][50]; /* matrice donnée et résultat */
      int B[50][50]; /* matrice donnée   */
      int N, M;      /* dimensions des matrices */
      int I, J;      /* indices courants */
      
      /* Saisie des données */
      printf("Nombre de lignes   (max.50) : ");
      scanf("%d", &N );
      printf("Nombre de colonnes (max.50) : ");
      scanf("%d", &M );
      printf("*** Matrice A ***\n");
      for (I=0; I<N; I++)
          for (J=0; J<M; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &A[I][J]);
              }
      printf("*** Matrice B ***\n");
      for (I=0; I<N; I++)
          for (J=0; J<M; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &B[I][J]);
              }
      /* Affichage des matrices */
      printf("Matrice donnée A :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      
      printf("Matrice donnée B :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", B[I][J]);
           printf("\n");
          }
      /* Addition de B à A */
      for (I=0; I<N; I++)
           for (J=0; J<M; J++)
                A[I][J] += B[I][J];
        /* Edition du résultat */
      printf("Matrice résultat A :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      return 0;
      }


      Exerccie 6: Multiplication de deux matrices

      Code:
      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int A[50][50]; /* matrice donnée   */
      int B[50][50]; /* matrice donnée   */
      int C[50][50]; /* matrice résultat */
      int N, M, P;   /* dimensions des matrices */
      int I, J, K;   /* indices courants */
      
      /* Saisie des données */
      printf("*** Matrice A ***\n");
      printf("Nombre de lignes de   A (max.50) : ");
      scanf("%d", &N );
      printf("Nombre de colonnes de A (max.50) : ");
      scanf("%d", &M );
      for (I=0; I<N; I++)
          for (J=0; J<M; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &A[I][J]);
              }
      printf("*** Matrice B ***\n");
      printf("Nombre de lignes de   B : %d\n", M);
      printf("Nombre de colonnes de B (max.50) : ");
      scanf("%d", &P );
      for (I=0; I<M; I++)
          for (J=0; J<P; J++)
              {
               printf("Elément[%d][%d] : ",I,J);
               scanf("%d", &B[I][J]);
              }
      /* Affichage des matrices */
      printf("Matrice donnée A :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<M; J++)
                printf("%7d", A[I][J]);
           printf("\n");
          }
      printf("Matrice donnée B :\n");
      for (I=0; I<M; I++)
          {
           for (J=0; J<P; J++)
                printf("%7d", B[I][J]);
           printf("\n");
          }
      /* Affectation du résultat de la multiplication à C */
      for (I=0; I<N; I++)
           for (J=0; J<P; J++)
               {
                C[I][J]=0;
                for (K=0; K<M; K++)
                     C[I][J] += A[I][K]*B[K][J];
               }
        /* Edition du résultat */
      printf("Matrice résultat C :\n");
      for (I=0; I<N; I++)
          {
           for (J=0; J<P; J++)
                printf("%7d", C[I][J]);
           printf("\n");
          }
      return 0;
      }


      Exercice 7: Triangle de Pascal

      Code:
      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int P[14][14]; /* matrice résultat  */
      int N;         /* degré du triangle */
      int I, J;      /* indices courants  */
      /* Saisie des données */
      do {
            printf("Entrez le degré N du triangle (max.13) : ");
           scanf("%d", &N);
      } while (N>13||N<0);
      /* Construction des lignes 0 à N du triangle: */
      /* Calcul des composantes du triangle jusqu'à */
      /* la diagonale principale. */
      for (I=0; I<=N; I++)
           {
            P[I][I]=1;
            P[I][0]=1;
            for (J=1; J<I; J++)
                  P[I][J] = P[I-1][J] + P[I-1][J-1];
           }
        /* Edition du résultat */
      printf("Triangle de Pascal de degré %d :\n", N);
      for (I=0; I<=N; I++)
          {
           printf(" N=%2d", I);
           for (J=0; J<=I; J++)
                if (P[I][J])
                      printf("%5d", P[I][J]);
           printf("\n");
          }
      return 0;
      }

Share This Page

Share