Tri d'une matrice

Fermé
england - 24 mars 2007 à 15:39
 khadija - 5 avril 2017 à 01:36
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");
}

}

5 réponses

remplir la matrice dans un tableau
faire le tri du tableau
remplir le tableau dans la matrice
1
merciiii beaucoup
0
ouali_r Messages postés 4 Date d'inscription mardi 10 mars 2009 Statut Membre Dernière intervention 16 mars 2009 1
12 mars 2009 à 10:08
votre pb c'est que le min reste le meme
on pose que min:=1 apres n*n recherche min:=1 !!!!!
1
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
tu px aussi faire A=sort(A,'descend') pr avoir l'ordre décroissant
1

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

Posez votre question
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
24 mars 2007 à 20:06
Bonjour,

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