Tri d'une matrice
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");
}
}
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
-
remplir la matrice dans un tableau
faire le tri du tableau
remplir le tableau dans la matrice -
votre pb c'est que le min reste le meme
on pose que min:=1 apres n*n recherche min:=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) -
tu px aussi faire A=sort(A,'descend') pr avoir l'ordre décroissant
-
Bonjour,
N'est-ce pas
for(IndiceColon=j;IndiceColon<colon;IndiceColon++)
au lieu de
for(IndiceColon=0;IndiceColon<colon;IndiceColon++)
?