#include <stdio.h>
#include <stdlib.h>
void main ()
{
int mata[50][50],matb[50][50],matp[3][3];//tableau : deux pou déclarer les valeur de l'user, un pour le résultat
int *pa,*pb,*pp; //pointeur (un par tableau)
short int m,n,o,p; //représente les dimensions de la matrice
short int i; //indiquera la position de la ligne dans le tableau
short int res; //test la valeur de retour
int som ; // som représente la somme des produit des ligne par les collones dans le produit matriciel
printf("\n\tMatrice MA m*n");
printf("\n\tentrer m : ");
res = scanf("%d",&m);
switch (res)
{
case -1 : printf("marche pas");
return -1;
case 0 : printf("marche pas");
return -1;
}
printf("\n\tentrer n : ");
res = scanf("%d",&n);
switch (res)
{
case -1 : printf("marche pas");
return -1;
case 0 : printf("marche pas");
return -1;
}
printf("\n\tMatrice MB o*p");
printf("\n\tentrer o : ");
res = scanf("%d",&o);
switch (res)
{
case -1 : printf("marche pas");
return -1;
case 0 : printf("marche pas");
return -1;
}
printf("\n\tentrer p : ");
res = scanf("%d",&p);
switch (res)
{
case -1 : printf("marche pas");
return -1;
case 0 : printf("marche pas");
return -1;
}
if (n != o)
{
printf("\n\tCes deux matrices sont impossible a multiplier\n\n\n\n\n\t");
}
if (n == o)
{
m--;
n--;
o--;
p--;
i=0;
pa = &mata[0][0];
while (pa<&mata[m+1][0])
{
while (pa < &mata[i][n+1])
{
printf("Entrer valeur A %d,%d : ",i+1,(50*50)-(&mata[49][49]-pa)-(50*i));
res = scanf("%d",pa);
switch (res)
{
case -1 : printf("marche pas");
return -1;
case 0 : printf("marche pas");
return -1;
}
pa = pa + 1;
}
pa = pa + 49 - n;
i++;
}
i=0;
pb = &matb[0][0];
while (pb<&matb[o+1][0])
{
while (pb < &matb[i][p+1])
{
printf("Entrer valeur B %d,%d : ",i+1,2500-(&matb[49][49]-pb)-(50*i));
//&matb[49][49] donne l'écart entre la fin du vecteur et la position du pointeur
//2500 = 50*50 est le nombre max d'espace mémoir réservé dans le vecteur
//lui soustraire l'écart permet de donner la position du pointeur par rapport à la première case
//Soustraire 50*i, où i représente le nombre de ligne, permet de n'indiqué que la collone.
// i + 1 car : la num des tableau commence à 0, la num des matrice commence à 1
res = scanf("%d",pb);
switch (res)
{
case -1 : printf("marche pas");
return -1;
case 0 : printf("marche pas");
return -1;
}
pb = pb + 1;
}
pb = pb + 49 - p;
i++;
}
pp = &matp[0][0];
pa = &mata[0][0];
i = 0;
while (pa < &mata[m+1][0])
{
while (pa < &mata[i][n+1])
{
pb = matb[0][0];
while (pb < &matb [0][p+1])
{
som = 0;
while (pb < &matb[o+1][0])
{
a = *pa;
b = *pb;
som = som + (a*b);
pb = pb + 49;
}
pb = pb + 50 - o;
*pp = som;
pp = pp +1;
}
pp = pp + 49 - p;
}
pa = pa + 1;
i++;
}
printf("Resultat du produit des deux matrices : ");
i=0;
pp = &matp[0][0];
while (pp<&matp[m+1][0])
{
printf("\n");
while (pp < &matp[i][p+1])
{
printf("\t%d",pp);
pp = pp + 1;
}
pp = pp + 49 - p;
i++;
}
}
}
Partager