Quelques modifs notamment au niveau du pivot mais il faudrait vérifier la méthode :
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
// --- Prototypes des fonctions
void LireMatrice(void);
void TraiterMatrice(void);
void VoirMatrice(const char*);
// --- Variables globales
int A[50][50];
int iDimension;
// ===================
// Fonction principale
// ===================
int main(void)
{
LireMatrice();
TraiterMatrice();
system("pause");
return 0;
}
// ===============
// Lire la matrice
// ===============
void LireMatrice(void)
{
int i,j;
// --- Saisir la dimension de la matrice
printf("Dimension de la matrice A : ");
scanf("%d",&iDimension);
// --- Saisir la matrice
for (i=0 ; i<iDimension ; ++i)
{
for (j=0 ; j<iDimension ; ++j)
{
printf("A[%d][%d] = ",i,j);
scanf("%d",&A[i][j]);
}
}
// --- Visualiser la matrice saisie
VoirMatrice("A");
}
// ==================
// Traiter la matrice
// ==================
void TraiterMatrice(void)
{
int i,j;
// --- Recherche du pivot
int i0,j0,iPivot = - INT_MAX;
for (i=0 ; i<iDimension ; ++i)
{
for (j=0 ; j<iDimension ; ++j)
{
if (A[i][j] > iPivot)
{
i0 = i;
j0 = j;
iPivot = A[i][j];
}
}
}
printf("Pivot A[%d][%d] = %d\n",i0,j0,iPivot);
A[i0][j0] = 1 / iPivot;
for (j=0 ; j<iDimension ; ++j)
A[i0][j] = -A[i0][j] / iPivot;
for (i=0 ; i<iDimension ; ++i)
A[i][j0] = A[i][j0] / iPivot;
// --- Visualiser la matrice résultat
VoirMatrice("resultat");
}
// ===============
// Voir la matrice
// ===============
void VoirMatrice(const char* pszTexte)
{
int i,j;
printf("\nMatrice %s :\n",pszTexte);
for (i=0 ; i<iDimension ; ++i)
{
for (j=0 ; j<iDimension ; ++j)
{
printf(" %d ",A[i][j]);
}
printf("\n");
}
printf("\n");
}
Ce qui donne :
Dimension de la matrice A : 3
A[0][0] = 1
A[0][1] = 2
A[0][2] = 3
A[1][0] = 4
A[1][1] = 5
A[1][2] = 6
A[2][0] = 7
A[2][1] = 8
A[2][2] = 9
Matrice A :
1 2 3
4 5 6
7 8 9
Pivot A[2][2] = 9
Matrice resultat :
1 2 0
4 5 0
0 0 0
Jean-François