bakka72
Messages postés2Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention 7 décembre 2004
-
6 déc. 2004 à 22:52
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011
-
7 déc. 2004 à 18:36
Bonjour,
Je dois réalisé un quick sort de chaines et jai u souci .
1er. je parcourt kle fichier a trié pour compter le nombre délément
2eme je crée un tableau nécessaire pour mettre tt mes éléments
3eme je reparcourt mon fichier en enregitrant mes éléments ds le tableau et le pb cest ke seuk le dernier élément du fichier est sauvegardé ds tt le tableau et je comprend po pk ??? kelkun pourai maider svp
merci davance
voici mon code (non optimisé)
#include<stdio.h>
#include<stdlib.h>
#define MAXCHAINE 10
void quicksort(char **tab,int nb);
void quicksort(char **tab,int nb)
{
int pivot,cpt,i,cptd=0,cptg=0;
char *bpivot=tab[0];
char *tabg[nb];
char *tabd[nb];
for(cpt=1;cpt<nb;cpt++)
{
/*Clasemen par ordre alphabetique*/
//if(strcmp(bpivot,tab[cpt])>=0) tabg[cptg++]=tab[cpt];
/*Classemen par gardeur*/
if(strlen(bpivot)>=strlen(tab[cpt])) tabg[cptg++]=tab[cpt];
else tabd[cptd++]=tab[cpt];
if (cptg>1) quicksort(tabg,cptg);
if (cptd>1) quicksort(tabd,cptd);
for (i=0;i<cptg;i++) tab[i]=tabg[i];
tab[cptg]=bpivot;
for (i=0;i<cptd;i++) tab[cptg+i+1]=tabd[i];
}
}
int main()
{
FILE *fichier;
FILE *res;
char **tab;
char *buf ;
char mot[100];
char buffer;
int cpt=0;
int parcourstab=0;
int i=0;
int longueur=0;
printf("\n---- Quick sort : Chaine ----\n");
fichier=fopen("words","r");
if (fichier==NULL) return(1);
else{
while(!feof(fichier)){
buffer=fgetc(fichier);
if(buffer=='\n') cpt++;
}
tab = malloc((cpt+1) * sizeof(char*));
if(tab==NULL)
{
printf("Memoire insuffisante\n");
exit(1);
}
else{
printf("Nombre de mot : %d\n\n",cpt);