<code type="c"></code>
salut tout le monde j'ai un programme en langage c sur les méthodes de tri mais il fonctionne pas correctemt, j'ai tout éssayé mais sa marche toujours pas;est-ce-que qualqu'un pourrait le verifier svp.merci d'avance
#include <conio.h>
#include <stdio.h>
void echanger(int tab[], int i, int j)
{
int memoire;
memoire=tab[i];
tab[i]=tab[j];
tab[j]=memoire;
}
void tri_bulle(int tableau[],int longueur)
{
int i, inversion;
void fusion(int tableau[],int deb1,int fin1,int fin2)
{
int *table1;
int deb2=fin1+1;
int compt1=deb1;
int compt2=deb2;
int i;
table1=malloc((fin1-deb1+1)*sizeof(int));
/*/on recopie les éléments du début du tableau*/
for(i=deb1;i<=fin1;i++)
{
table1[i-deb1]=tableau[i];
}
for(i=deb1;i<=fin2;i++)
{
if (compt1==deb2) /*/c'est que tous les éléments du premier tableau ont été utilisés*/
{
break; /*/tous les éléments ont donc été classés*/
}
else if (compt2==(fin2+1)) /*/c'est que tous les éléments du second tableau ont été utilisés*/
{
tableau[i]=table1[compt1-deb1]; /*/on ajoute les éléments restants du premier tableau*/
compt1++;
}
else if (table1[compt1-deb1]<tableau[compt2])
{
tableau[i]=table1[compt1-deb1]; /*/on ajoute un élément du premier tableau*/
compt1++;
}
else
{
tableau[i]=tableau[compt2]; /*/on ajoute un élément du second tableau*/
compt2++;
}
}
free(table1);
}
void tri_fusion_bis(int tableau[],int deb,int fin)
{
if (deb!=fin)
{
int milieu=(fin+deb)/2;
tri_fusion_bis(tableau,deb,milieu);
tri_fusion_bis(tableau,milieu+1,fin);
fusion(tableau,deb,milieu,fin);
}
}
/*programme qui permet de tester le tri fusion*/
void main(void)
{
int i;
int tab[]={5,0,9,8,6,3,7,1,4,2};
clrscr();
printf("tableau avant classement \n");
for(i=0;i<10;i++)
{
printf("%i,",tab[i]);
}
void fusion(int tableau[],int deb1,int fin1,int fin2) { int *table1; int deb2=fin1+1; int compt1=deb1; int compt2=deb2; int i;
table1=malloc((fin1-deb1+1)*sizeof(int));
/*/on recopie les éléments du début du tableau*/ for(i=deb1;i<=fin1;i++) {
table1[i-deb1]=tableau[i]; }
for(i=deb1;i<=fin2;i++) { if(compt1==deb2)/*/c'est que tous les éléments du premier tableau ont été utilisés*/ { break; /*/tous les éléments ont donc été classés*/ } elseif(compt2==(fin2+1))/*/c'est que tous les éléments du second tableau ont été utilisés*/ {
tableau[i]=table1[compt1-deb1]; /*/on ajoute les éléments restants du premier tableau*/
compt1++; } elseif(table1[compt1-deb1]<tableau[compt2]) {
tableau[i]=table1[compt1-deb1]; /*/on ajoute un élément du premier tableau*/
compt1++; } else {
tableau[i]=tableau[compt2]; /*/on ajoute un élément du second tableau*/
compt2++; } }
free(table1); }
/*programme qui permet de tester le tri fusion*/ void main(void) { int i; int tab[]={5,0,9,8,6,3,7,1,4,2};
clrscr(); printf("tableau avant classement \n"); for(i=0;i<10;i++) { printf("%i,",tab[i]); }
for(i=0;i<10;i++) { printf("%i,",tab[i]); } printf("\n appuyez sur une touche");
getch(); }
Met bien ton code entre les balises "code" et INDENTTE LE
métrhodes de tri
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.