exercice 7 // produit de deux matrices

 

 exercice 7: 

ecrire un programme qui fait le produit de deux matrices . (utilisez les pointeurs/il y a aussi une correction sans pointeurs ) 

programme 7: (avec pointeurs)

#include<stdio.h>
#include<conio.h>
#include<malloc.h>
main()
{  
      
         /* decleretion des varaibles*/
    
  int i,l,n,m,k,u,j;  
      double *t0,*t1,*p,s;
      /* la declaration et la saisi de la premiere matrice*/
      printf(" donnez le nombre de lignes de la premiere matrice: \n");
      scanf("%d", &u);
      printf(" donnez le nombre de colonnes de la premiere matrice:\n");
      scanf("%d", &n);

      /* la fonction calloc alloue un espace mémoire pour le tableau t0 */
      t0=(double*)calloc(n*u,sizeof(double));
      
      for (j=0;j<n*u;j++){
      printf(" donnez un element:\n");
      scanf("%lf",t0+j);
      }
      
    
  /* l'affichage de la premierre matrice*/
      printf(" la premiere matrice est:\n");
          for (i=0;i<u;i++) {
            for (j=0;j<n;j++)  
            printf(" %f ", *(t0+i*u+j));
            printf("\n");
            }
              printf("\n");  
               /* la declaration et la saisi de la deuxieme matrice*/
            printf(" donnez le nombre de lignes de la deuxieme matrice:\n");
            scanf("%d", &m);
            printf(" donnez le nombre de colonnes de la deuxieme matrice:\n");
            scanf("%d", &k);
            if (n!=m)
         printf(" le produit n'est pas possibe car le nombre\n de colonnes de la premiere"
         " matrice n'est pas\n egale au nombre de lignes de la deuxieme");
            else

            { 
            t1=(double*)calloc(m*k,sizeof(double)); 
            p =(double*)calloc(k*u,sizeof(double));
     
      for (j=0;j<k*m;j++){
      printf(" donnez un element:\n");
      scanf("%lf", t1+j);
      }
       /* l'affichage de la deuxieme matrice*/
      printf(" la deuxieme matrice est:\n");
          for (i=0;i<m;i++){
            for (j=0;j<k;j++)
            printf(" %f ", *(t1+i*m+j));
            printf("\n");

            }
            /* calcul et affichage de la matrice produit*/
             for (i=0;i<u;i++) {
             for (j=0;j<k;j++) { 
                 s=0;
              for (l=0;l<n;l++)
              s=s+*(t0+i*u+l)*(*(t1+l*n+j));
              *(p+i*u+j)=s;
              }
              }
              printf("\n");
              printf("le produit des deux matrices est:\n");
               for (i=0;i<u;i++) {
            for (j=0;j<k;j++)
            printf(" %f ",*(p+i*u+j));
  
          printf("\n");
            }
            }
getch();
}

programme 7:(sans pointeurs)

 #include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{        
         
      int i,s,l,n,m,k,u,j;  
         
      printf(" donner le nombre de lignes de la premiere matrice: \n");
      scanf("%d", &u);
      printf(" donner le nombre de colonnes de la premiere matrice:\n");
      scanf("%d", &n); 
      int tab0[u][n];
      /* lecture de la premiere matrice*/
      for (i=0;i<u;i++){
      for (j=0;j<n;j++){
      printf(" donner l'element [%d][%d]:\n",i,j);
      scanf("%d", &tab0[i][j]);
      }
      }
      /* affichage de la premiere matrice*/
      printf(" la premiere matrice est:\n");
          for (i=0;i<u;i++) {
            for (j=0;j<n;j++)  
            printf(" %d ", tab0[i][j]); 
            printf("\n");
            }
              printf("\n");  
               /* lecture de la deuxieme matrice*/
            printf(" donner le nombre de lignes de la deuxieme matrice:\n");
            scanf("%d", &m);
            printf(" donner le nombre de colonnes de la deuxieme matrice:\n");
            scanf("%d", &k);
            if (n!=m){
         printf(" le produit n'est pas possibe car le nombre\n de colonnes de la premiere matrice n'est pas\n egale au nombre de lignes de la deuxieme");
         }
            else
            {
                 int  tab1[m][k],prod[u][k];
             if (n=m){
             for (i=0;i<m;i++){
      for (j=0;j<k;j++){
      printf(" donner l'element [%d][%d] de la deuxieme matrice:\n",i,j);
      scanf("%d", &tab1[i][j]);
      }
      }
       /* affichage de la deuxieme matrice*/
      printf(" la deuxieme matrice est:\n");
          for (i=0;i<m;i++){
            for (j=0;j<k;j++){
            printf(" %d ", tab1[i][j]);
            }
            printf("\n");}
            /* calcul de la matrice produit*/
            for (i=0;i<u;i++) {
             for (j=0;j<k;j++) { 
                 s=0;
              for (l=0;l<n;l++){
              s=s+tab0[i][l]*tab1[l][j];}
              prod[i][j]=s;

}}
              printf("\n");
               /* affichage de la matrice produit*/
              printf("le produit des deux matrices est:\n");
               for (i=0;i<u;i++) {
            for (j=0;j<k;j++)  
            printf(" %d ",prod[i][j]); 
            printf("\n");
           }
            }
getch();
}
}

 


remarque: si vos copiez ce programme tachez à ce que la fonction printf soit sur une seul ligne !

 

3 votes. Moyenne 3.67 sur 5.


×