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

}

5 réponses

ro
 
remplir la matrice dans un tableau
faire le tri du tableau
remplir le tableau dans la matrice
1
khadija
 
merciiii beaucoup
0
ouali_r Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   1
 
votre pb c'est que le min reste le meme
on pose que min:=1 apres n*n recherche min:=1 !!!!!
1
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
spirt
 
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   Statut Membre Dernière intervention   342
 
Bonjour,

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