Tri d'une matrice

england -  
 khadija -
slt tout le monde:
voila je voudrai faire un Tri de la matrice selon l'ordre croissant: j'ai fait un programme mais ça ne marche pas: l'idée est juste mais je ne sais pas!!!!
j'ai comparer chaque élément de la matrice avec le reste en sauvgardant la position de la plus petite valeur. et apres en change la valeur qu'on a comparer avec la plus petite valeurs dns la matrice.
merci a tous d'avance

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

int main(void)
{
int mat[20][20]; //la matrice
int i,j; //indice courant
int ligne,colon; //les dimension de la matrice
int IndiceLigne,IndiceColon; //indice pour parcourir la matrice et
//et comparer ces valeurs

int Aide; // valeur d'aide
int posLign,posColon; //position de la plus petite valeur dans la matrice

printf("donner le nombre de ligne de votre matrice: ");
scanf("%d",&ligne);
printf("\ndonner le nombre de colonne de votre matrice: ");
scanf("%d",&colon);

for(i=0;i<ligne;i++)
for(j=0;j<colon;j++)
{
printf("donner mat[%d][%d]: ",i,j);
scanf("%d",&mat[i][j]);
}
for(i=0;i<ligne;i++)
{
for(j=0;j<colon;j++)
printf("%d ",mat[i][j]);
printf("\n");
}

printf("\n\n le Tri est:\n");

//pour le Tri croissant
for(i=0;i<ligne;i++)
for(j=0;j<colon;j++)
{
posLign = i; //la position de la plus petite valeur
posColon = j;
//rechercher la position de la plus petite valeur
for(IndiceLigne=i;IndiceLigne<ligne;IndiceLigne++)
for(IndiceColon=0;IndiceColon<colon;IndiceColon++)
{
if(mat[IndiceLigne][IndiceColon]<mat[posLign][posColon])
{
posLign=IndiceLigne;
posColon = IndiceColon;
}
}
Aide=mat[i][j];
mat[i][j]=mat[posLign][posColon];
mat[posLign][posColon]=Aide;
}

for(i=0;i<ligne;i++)
{
for(j=0;j<colon;j++)
printf("%d ",mat[i][j]);
printf("\n");
}

}
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. ro
     
    remplir la matrice dans un tableau
    faire le tri du tableau
    remplir le tableau dans la matrice
    1
    1. khadija
       
      merciiii beaucoup
      0
  2. ouali_r Messages postés 6 Statut Membre 1
     
    votre pb c'est que le min reste le meme
    on pose que min:=1 apres n*n recherche min:=1 !!!!!
    1
  3. kaguouille
     
    essaye d'utiliser la fonction sort :
    A=[1 4 6 2 7 8 9 2]

    A =

    1 4 6 2 7 8 9 2

    >> [ATrier indices]=sort(A)

    ATrier =

    1 2 2 4 6 7 8 9

    indices =

    1 4 8 2 3 5 6 7
    Si tu préfère dans l'ordre décroissant utilise sort(-A)
    1
  4. spirt
     
    tu px aussi faire A=sort(A,'descend') pr avoir l'ordre décroissant
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ekra Messages postés 1873 Statut Membre 342
     
    Bonjour,

    N'est-ce pas
    for(IndiceColon=j;IndiceColon<colon;IndiceColon++)
    au lieu de
    for(IndiceColon=0;IndiceColon<colon;IndiceColon++)
    ?
    0