Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void afficheTableau(int tab[], int nbElem){
- int b;
- printf("[");//il a demandé d'afficher le tableau sous cette forme : [e1, e2, e3, ... ] donc il faut afficher un crochet avant et apres l'affichage du tableau
- // il fait egalement apres l'affichage de chaque element afficher une virgule [e1, e2, e3, ... ]
- for(b=0;b<nbElem-1;b++){
- printf("%d, ",tab[b]); // j'ai ajouté une virgule apres %d
- }
- printf("%d ]",tab[nbElem-1] ); // dans la boucle for j'ai enlevé l'affichage du dernier element
- }
- typedef int* TABLEAU;
- TABLEAU genereTableau(int nbElem, int valMax){
- TABLEAU t = (TABLEAU) malloc(nbElem * sizeof(int));
- if (t != NULL){
- int i;
- for (i=0; i<nbElem; i++){
- t[i] = rand()%(valMax + 1);
- }
- return t;
- }}
- void tri_par_denombrement(int tab[],int nbElem, int valMax, int resultat[])
- {
- int E[valMax+1],i,j,indice;
- for (i=0 ; i<valMax+1; i++)
- {
- E[i]=0;
- }
- for (i=0 ; i<nbElem; i++)
- {
- E[tab[i]]= E[tab[i]]+1;
- }
- indice=0;
- for (i=0 ; i<valMax+1; i++)
- {
- for (j=0 ; j<E[i]; j++)
- {
- resultat[indice]=i;
- indice++;
- }
- }
- }
- int taille_entier(int a)
- {
- int taille=0;
- while(a>0)
- {
- a=a/10;
- taille++;
- }
- return taille;
- }
- int unite(int nombre,int indice_unite)
- {
- int i, unite;
- for(i=0; i<indice_unite; i++)
- {
- unite=nombre%10;
- nombre=nombre/10;
- }
- return unite;
- }
- void Tri_par_base(int tab[],int valMax,int nbElem,int resultat[])
- {
- int i=0,j,h,p,c=taille_entier(valMax),tab_unite[nbElem],tab_unite_trie[nbElem];
- for(i=1; i<=c; i++)
- {
- for(j=0; j<nbElem; j++) // on remplie le tableau avec les unite
- {
- tab_unite[j]=unite(tab[j],i);
- }
- tri_par_denombrement(tab_unite,nbElem,valMax,tab_unite_trie); // on trie le tableau
- for(h=0; h<nbElem; h++)
- {
- for(p=0; p<nbElem; p++)
- {
- if(tab_unite_trie[p]==tab_unite[h])
- {
- resultat[p]=tab[h];
- tab_unite_trie[p]=-1;
- break;
- }
- }
- }
- for(j=0; j<nbElem; j++)
- {
- tab[j]=resultat[j];
- }
- }
- }
- int main()
- {
- int taille,max;
- printf("Veuillez saisir la taille du tableau : \n");
- scanf("%d",&taille);
- printf("Veuillez saisir le max : \n");
- scanf("%d",&max);
- int *tab=genereTableau(taille,max);
- int resultat[taille],resultat2[taille];
- printf("tableau initial = ");
- afficheTableau(tab, taille);
- tri_par_denombrement(tab,taille, max,resultat);
- printf("\n");
- printf("tableau trie par denombrement = ");
- afficheTableau(resultat,taille);
- printf("\n");
- printf("Tableau trie par base =");
- Tri_par_base(tab,max,taille,resultat2);
- afficheTableau(resultat2,taille);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement