exercice 8 // puissance d'une matrice

exercice 8: 

ecrire un programme qui calcul la puissance d'une matrice ,par exemple une matrice donnée au cube ou au carrré.

programme 8:

#include<stdio.h>
#include<conio.h>
#include<malloc.h>
main()
{
      int  l,m,cc,n,i,j,k;
      double s;
      double *mat,*prod,*result;
      /* lecture de l'ordre de la matrice carée */

      
printf("donnez le nombre de lignes et de colonnes de le matrice carree:\n");
      scanf("%d",&n);
        mat=(double*)calloc(n*n,sizeof(double));
          prod=(double*)calloc(n*n,sizeof(double));
            result=(double*)calloc(n*n,sizeof(double));
      /* lecture de la matrice*/
      for(i=0;i<n*n;i++){
      printf("donnez un element\n");
      scanf("%lf",mat+i);
      }
      /* affichage de la matrice */
      printf(" la matrice est:\n");
       for(i=0;i<n;i++){
       for(j=0;j<n;j++)
      printf("%f ",*(mat+i*n+j));

      
printf("\n");
      }
      do{
      k=2;
      printf(" donnez la puissance:\n");
      scanf("%d",&m);
      /* calcul de la puissance */
       for(i=0;i<n;i++){
       for(j=0;j<n;j++){
      s=0;
       for(l=0;l<n;l++){
                  s+=*(mat+i*n+l)*(*(mat+l*n+j));
                  }
                  *(prod+i*n+j)=s;
                  }
                  }

       
while (k<m){
       for(i=0;i<n;i++){
       for(j=0;j<n;j++){
      s=0;
      for(l=0;l<n;l++)
      s+=*(prod+i*n+l)*(*(mat+l*n+j));
      *(result+i*n+j)=s;
      }
      }
       for(i=0;i<n;i++){
       for(j=0;j<n;j++)
                       *(prod+i*n+j)=*(result+i*n+j);
                       }
                       k++;
                       }

                
       /* affichage de la matrice resultat */
                       printf("la matrice a la puissance %d est:\n",m);
                               for(i=0;i<n;i++){
                               for(j=0;j<n;j++)
                               if(m>1) printf(" %f ",*(prod+i*n+j));
                               else  printf(" %f ",*(mat+i*n+j));
                       printf("\n");
                       }
                       printf("\n voulez vous entrez une nouvelle puissance?\n"
                               " si oui tapez 1\n"
                               " si non tapez 2\n");
                               scanf("%d",&cc);
                       }while(cc==1);
                       getch();
                       }

2 votes. Moyenne 5.00 sur 5.