1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| #include <iostream>
#define FOR(j) for(int i=0; i<j; i++)
using namespace std;
void copie(long *tableauOriginal, long *tableauCopie, long tailleTableau);
void ordonne(long *tableau, long tailleTableau);
long minimumTableau(long *tableau, long tailleTableau );
long valeurMaxTableau(long *tableau, long tailleTableau );
void afficheTableau( long *tableau, long tailleTableau);
int main()
{
long tableau[10]={5,8,6,7,5,3,4,8,1,5};
long tableau2[10]={5,8,6,7,5,3,4,8,1,5};
ordonne(tableau2,10);
afficheTableau(tableau,10);
afficheTableau(tableau2,10);
system("PAUSE");
return 0;
}
void copie(long *tableauOriginal, long *tableauCopie, long tailleTableau)
{
FOR(tailleTableau)
{tableauCopie[i]=tableauOriginal[i];}
}
long minimumTableau(long *tableau, long tailleTableau )
{
long i,minimum,ouEstMinimum;
// on initialise les valeurs de minimu et ouEstMinimum
minimum=tableau[0];
ouEstMinimum=0;
//Ensuite on conpare cette valeur a celle du tableau
FOR(tailleTableau)
{
// si on en recontre une plus petite on la stock dans minimum et on retient son emplacement
if (tableau[i]<minimum)
{ minimum=tableau[i];
ouEstMinimum=i;
}
}
//ayant trouvé le minimumn on met un zero a la place et on renvoi le minimum
tableau[ouEstMinimum]=0;
return minimum;
}
void ordonne(long *tableau, long tailleTableau)
{
// On cherche la valeur max du tableau a ordonner
long valeurMax;
valeurMax=valeurMaxTableau(tableau, tailleTableau);
// On copie le tableau dans un deuxième tableau
int *tableau2 = NULL;
tableau2 = new int[tailleTableau];
copie(tableau,tableau2,tailleTableau);
// On créé un tableau pour stocker les positions des minimums successifs
int *tableauDesMinimums = NULL;
tableauDesMinimums = new int[tailleTableau];
FOR(tailleTableau)
{
// on cherche le minimum du tableau et on stock sa position plutot que sa valeur
tableauDesMinimums[i]=minimumTableau(tableau2, tailleTableau);
// On met une valeur suffisament grande pour être sure de ne pas retomber dessus
tableau2[tableauDesMinimums[i]]=(valeurMax+1);
}
FOR(tailleTableau)
{
// On ordonne ensuite le tout
tableau2[i]=tableau[tableauDesMinimums[i]];
}
copie(tableau2,tableau,tailleTableau);
delete tableauDesMinimums;
delete tableau2;
}
long valeurMaxTableau(long *tableau, long tailleTableau )
{
long valeurMaxTableau;
valeurMaxTableau=tableau[0];
FOR(tailleTableau)
{
if (tableau[i]>valeurMaxTableau)
{
valeurMaxTableau= tableau[i];
}
}
return valeurMaxTableau ;
}
void afficheTableau(long *tableau, long tailleTableau)
{
FOR(tailleTableau)
{
cout << i << " "<< tableau[i]<<endl;
}
} |
Partager