begin process at 2010 03 21 01:51:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

la methode d'echange


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

la methode d'echange

lundi 19 mai 2008 à 21:16:32 | la methode d'echange

cleopatre1988



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]);
     }
   }

lundi 19 mai 2008 à 21:27:36 | Re : la methode d'echange

Pistol_Pete

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 : [ Lien ]

lundi 19 mai 2008 à 21:44:54 | Re : la methode d'echange

jfrancois

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

lundi 19 mai 2008 à 22:53:05 | Re : la methode d'echange

cleopatre1988

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]);
     }
   }
}  



  
  
lundi 19 mai 2008 à 23:15:23 | Re : la methode d'echange

Pistol_Pete

J 'ai exécuté le programme et paf : Division par zéro...

Mon site internet : [ Lien ]

lundi 19 mai 2008 à 23:37:59 | Re : la methode d'echange

jfrancois

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



Cette discussion est classée dans : printf, void, for, i0, j0


Répondre à ce message

Sujets en rapport avec ce message

Besoin d'aide en C - Fonction [ par bugs2600 ] Voici mon programme quelqu'un pourrait-il m'aider je dois faire une fonction et je ne vois pas comment la faire le non de ma fonction doit etre PRODMA Pb peut etre de compilateur ?! Need Help please [ par Orezza ] Orezzasalut à tous, je ne comprends vraiment pas le Pb, le compilateur Visual C++ indique 0 erreur-0 warning, or kand j'execute mon prog des ke je ren Pb d'affichage avec des listes doublement chianées [ par Orezza ] Bonjour a tous,voila je dois faire un petit analyseur syntaxique, en ce moment j'en suis au prémice de mon code et j'ai dejà un Big problem d'affichag pkoi c amarche pas !!!!!!!!!!! [ par zebrahead ] j'ai un souci pkoi ca marche paaa,ouinnn, aider moi sivoupléééé,thanks a tous les mecs qui touchent tellement qui sauront trouver la finte,#include#de base de donne [ par bigNB ] bjr je doi realiser une connection a une base de donness.etan donne que j avais tres peu de temps j ai repris une source dun programmeurelle va correc bitte hilfe!!!!!!!!! [ par sansan_2 ] Bonjour!!!!!!!! le programme c est un FIFO (ringpufffer) et j aimerais avoir une amelioration. Apres execution du programme, faire une tabulation, un time.h [ par coucou747 ] j'aimerais cronométrer le temp de calcul d'un de mes programme...j'ai vu plusieurs sources, mais je n'arrives pas a les coller chez moi...voici mon pr affichage de caractere dans une grille [ par anzelus ] bonjour, voila, je suis un debutant en c, je dois faire un programme qui affiche une grille de points sur console, apres afficher un caractere special Bug windows avec mon programme (nivo débutant) [ par MATHIS49 ] Bonjour ! Etant un gros debutant en C je m'essai à faire un programme d'amortissement tout simple. Mais le probleme c'est que windows plante lorsque j help une fonction qui a besoin de vous [ par natacha86 ] Re bonjour a tout le monde, voila j'ai mis tout le prog si vous voulez tester, en fait le pb viens de la fonctino tri_shell(), je ne sais pas pkoi ell


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales