La methode d'echange

cleopatre1988 Messages postés 4 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 19 mai 2008 - 19 mai 2008 à 21:16
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 - 19 mai 2008 à 23:37
salut
  bon j'essai de faire un programme qui correspond au methode d'echange
d'une matrice,voila le script en langage c mais il y'a un probleme dans la fonction de  trait.

#include <stdio.h>
#include<stdlib.h>



int A[50][50];
int B[50];
int X[50];
int i,j,n,choix;


main()
{  void lire(void);
   void trait(void);
       lire();
       trait();
      
       system("pause");
}
 
void lire(void)   //debut de fonction
{
printf("Entrer la dimension de la matrice A\n");
scanf("%d",&n);
if ((n<0)||(n==0)) printf(" entrer une dimension valide \n");


for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{ printf(" A[%d][%d]=",i,j);
  scanf("%d",&A[i][j]);
}
}
 printf(" la matrice est :\n");
  for(i=1;i<=n;i++)
{
     for(j=1;j<=n;j++)
  {       printf(" %d ",A[i][j]);
         
  }
    printf("\n");
}
}                 // fin de fonction


void trait(void)
{ int piv=1,i0,j0;
 
 for(i=1;i<=n;i++)
 {
     for(j=1;j<=n;j++)
     {  if (A[i][j]>piv)  { i0=i;j0=j;piv=A[i][j];}
     }
 }
 
A[i0][j0]= (float)(1/A[i0][j0]);


for (j=1;j<=n;j++)
 {  A[i0][j]=(float)(-A[i0][j]/A[i0][j0]);
 }
 
for(i=1;i<=n;i++)
 {  A[i][j0]=(float)(A[i][j0]/A[i0][j0]);
 }
 
 printf(" la matrice resultat \n");
    for(i=1;i<=n;i++)
   {
     for(j=1;j<=n;j++)
     { printf(" %d ",A[i][j]);
     }
   }

5 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
19 mai 2008 à 21:27
Salut

J'ai pas regarder en détail le code, mais n'oublie pas qu'un tableau en C est indicé de 0 à n-1 et NON de 1 à n.
Ici dans toutes tes boucles, tu écris et tu lis en dehors de ton tableau.

A+
Mon site internet : http://pistol.petesampras.free.fr
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
19 mai 2008 à 21:44
Bonsoir,

1) Pas de prototypes dans une fonction.
2) if ((n<0)||(n==0)) ... : if (n <= 0) ...
3) Les indices commencent à zéro.
4) A[i][j0]=(float)(A[i][j0]/A[i0][j0]); : A est entier, le cast avec float ne sert à rien. Et les divisions par zéro ne sont pas exclues.

Jean-François
0
cleopatre1988 Messages postés 4 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 19 mai 2008
19 mai 2008 à 22:53
bon merci pour vos reponses j'ai fais ce que vous avez dit et voila mon code
mais il y'a toujours le probleme:je n'ai pas compris (pas de prototype dans une fonction).
#include <stdio.h>
#include<stdlib.h>

int A[50][50];
int B[50];
int X[50];
int i,j,n,choix;



main()
{ void lire(void);
void trait(void);

lire();
trait();

system("pause");
}

void lire(void) //debut de fonction
{
printf("Entrer la dimension de la matrice A\n");
scanf("%d",&n);


for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ printf(" A[%d][%d]=",i,j);
scanf("%d",&A[i][j]);
}
}
printf(" la matrice est :\n");
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ printf(" %d ",A[i][j]);

}
printf("\n");
}
} // fin de fonction

void trait(void)
{ int piv=1,i0,j0;

for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ if (A[i][j]>piv) { i0=i;j0=j;piv=A[i][j];}
}
}

A[i0][j0]= (float)(1/A[i0][j0]);

for (j=0;j<=n-1;j++)
{ A[i0][j]=(-A[i0][j]/A[i0][j0]);
}

for(i=0;i<=n-1;i++)
{ A[i][j0]=(A[i][j0]/A[i0][j0]);
}

printf(" la matrice resultat \n");
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ printf(" %d ",A[i][j]);
}
}


}





#include <stdio.h>
#include<stdlib.h>

int A[50][50];
int B[50];
int X[50];
int i,j,n,choix;



main()
{ void lire(void);
void trait(void);

lire();
trait();

system("pause");
}

void lire(void) //debut de fonction
{
printf("Entrer la dimension de la matrice A\n");
scanf("%d",&n);


for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ printf(" A[%d][%d]=",i,j);
scanf("%d",&A[i][j]);
}
}
printf(" la matrice est :\n");
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ printf(" %d ",A[i][j]);

}
printf("\n");
}
} // fin de fonction

void trait(void)
{ int piv=1,i0,j0;

for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ if (A[i][j]>piv) { i0=i;j0=j;piv=A[i][j];}
}
}

A[i0][j0]= (float)(1/A[i0][j0]);

for (j=0;j<=n-1;j++)
{ A[i0][j]=(-A[i0][j]/A[i0][j0]);
}

for(i=0;i<=n-1;i++)
{ A[i][j0]=(A[i][j0]/A[i0][j0]);
}

printf(" la matrice resultat \n");
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{ printf(" %d ",A[i][j]);
}
}
}
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
19 mai 2008 à 23:15
J 'ai exécuté le programme et paf : Division par zéro...

Mon site internet : http://pistol.petesampras.free.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
19 mai 2008 à 23:37
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




   // --- 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 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



   for (i=0 ; i




   // --- 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

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
0
Rejoignez-nous