Operations sur les matrices

Contenu du snippet

opérations sur les matrices:
+addition
+multiplication
+puissance
un peu long... mais simple!

Source / Exemple :


/* Operations sur les matrices */
#include<stdio.h>
main(){
       while(1)
       {
       int X;
       printf("Que voulez vous calculer??");
       printf("\n>somme       : taper 1");
       printf("\n>produit     : taper 2");
       printf("\n>puissance   : tapez 3\n");
       printf("\n*pour quitter: tapez 0\n");
       
       scanf("%d",&X);
       int i,j,k,l;
       if(X==0) break;
       if(X<0||X>3) continue;
       
       //somme:
       if(X==1){
                int m,n;
                printf("lignes de A : ");
                scanf("%d",&m);
                printf("colones de A: ");
                scanf("%d",&n);
                printf("lignes de B : %d\n",m);
                printf("colones de B: %d\n",n);
                
                //saisie et affichage de A:
                int A[m][n];
                for(i=0;i<m;i++) for(j=0;j<n;j++){
                                                  printf("a_(%d,%d)=",i,j);
                                                  scanf("%d",&A[i][j]);
                                                  }
                
                
                for(i=0;i<m;i++) for(j=0;j<n;j++){
                                                  printf("\t%d",A[i][j]);
                                                  if(j==n-1) printf("\n\n");
                                                  }
       
                //saisie et affichage de B:
                int B[m][n];
                for(i=0;i<m;i++) for(j=0;j<n;j++){
                                                  printf("b_(%d,%d)=",i,j);
                                                  scanf("%d",&B[i][j]);
                                                  }
                
                for(i=0;i<m;i++) for(j=0;j<n;j++){
                                                  printf("\t%d",B[i][j]);
                                                  if(j==n-1) printf("\n\n");
                                                  }
                
                //calcule de la somme et affichage resultat:
                int sum[m][n];
                printf("\n\n la matrice A+B est: \n\n");
                for(i=0;i<m;i++) for(j=0;j<n;j++){
                                                  sum[i][j]=A[i][j]+B[i][j];
                                                  printf("\t%d",sum[i][j]);
                                                  if(j==n-1) printf("\n\n");
                                                  }
                continue;
                }
       
       //produit:
       if(X==2){
                int m,n,p;
                printf("lignes de A : ");
                scanf("%d",&m);
                printf("colones de A: ");
                scanf("%d",&n);
                printf("lignes de B : %d\n",n);
                printf("colones de B: ");
                scanf("%d",&p);
                
                //saisie et affichage de A:
                int A[m][n];
                for(i=0;i<m;i++) for(j=0;j<n;j++){
                                                  printf("a_(%d,%d)=",i,j);
                                                  scanf("%d",&A[i][j]);
                                                  }
                
                for(i=0;i<m;i++) for(j=0;j<n;j++){
                                                  printf("\t%d",A[i][j]);
                                                  if(j==n-1) printf("\n\n");
                                                  }
                
                //saisie et affichage de B:
                int B[n][p];
                for(i=0;i<n;i++) for(j=0;j<p;j++){
                                                  printf("b_(%d,%d)=",i,j);
                                                  scanf("%d",&B[i][j]);
                                                  }
                
                for(i=0;i<n;i++) for(j=0;j<p;j++){
                                                  printf("\t%d",B[i][j]);
                                                  if(j==p-1) printf("\n\n");
                                                  }
                
                //calcule du produit:
                int product_AB[m][p];
                int product_BA[m][p];
                for(i=0;i<m;i++) for(j=0;j<p;j++){
                                                  product_AB[i][j]=0;
                                                  for(k=0;k<n;k++) product_AB[i][j]=product_AB[i][j]+A[i][k]*B[k][j];
                                                  }
                //affichage resultat:
                printf("\n\n la matrice A.B est: \n\n");
                for(i=0;i<m;i++) for(j=0;j<p;j++){
                                                  printf("\t%d",product_AB[i][j]);
                                                  if(j==p-1) printf("\n\n");
                                                  }
                continue;
                }
       
       //puissance:
       if(X==3){
                int n;
                printf("taille de la matrice carree: ");
                scanf("%d",&n);
                //saisie et affichage de A:
                int A[n][n];
                for(i=0;i<n;i++) for(j=0;j<n;j++){
                                                  printf("a_(%d,%d)=",i,j);
                                                  scanf("%d",&A[i][j]);
                                                  }
                for(i=0;i<n;i++) for(j=0;j<n;j++){
                                                  printf("\t%d",A[i][j]);
                                                  if(j==n-1) printf("\n\n");
                                                  }
                //calcule de la puissance:
                int power[n][n];
                int help[n][n];
                int p;
                
                printf("puissance? p=");
                scanf("%d",&p);
                
                if(p==0)
                {
                for(i=0;i<n;i++)for(j=0;j<n;j++){
                                                 if(i==j) power[i][j]=1;
                                                 else power[i][j]=0;
                                                 }
                }
                if(p>0)
                {
                for(i=0;i<n;i++) for(j=0;j<n;j++) help[i][j]=A[i][j];
                
                for(l=0;l<p-1;l++){
                                   for(i=0;i<n;i++)for(j=0;j<n;j++){
                                                                    power[i][j]=0;
                                                                    for(k=0;k<n;k++) power[i][j]=power[i][j]+A[i][k]*help[k][j];
                                                                    }
                                   
                                   for(i=0;i<n;i++) for(j=0;j<n;j++) help[i][j]=power[i][j];
                                   }
                }
                //affichage resultat:
                printf("\n\n la matrice A^%d est: \n\n",p);
                for(i=0;i<n;i++) for(j=0;j<n;j++){
                                                  printf("\t%d",power[i][j]);
                                                  if(j==n-1) printf("\n\n");
                                                  }
                continue;
                }
       }
       getchar();
       getchar();
       }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.