begin process at 2012 05 29 20:22:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Problème avec quick sort avec des chaines de caractères


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec quick sort avec des chaines de caractères

lundi 6 décembre 2004 à 22:52:44 | Problème avec quick sort avec des chaines de caractères

bakka72

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);

fseek(fichier,0,SEEK_SET);
while(!feof(fichier)){
buffer=fgetc(fichier);
if(buffer=='\n')
{
mot[i]='\0';
tab[parcourstab] = malloc((longueur+1) * sizeof(char));
if(tab[parcourstab]==NULL)
{
printf("Memoire insuffisante\n");
exit(1);
}
tab[parcourstab] = mot;
printf("%d %s\n",parcourstab,mot);
parcourstab++;
i=0;
longueur=0;
if(parcourstab==20) break;
}
else{
longueur++;
mot[i++]=buffer;
}
}
fclose(fichier);
}


printf("\n");
quicksort(tab,longueur);
res=fopen("words2.txt","w+");
if (res==NULL) return(1);
else{

for(cpt=0;cpt<20;cpt++)
{
fputs(tab[cpt],res);
fputs("\n",res);
}}
fclose(res);
}
free(tab);
return 0;
}
mardi 7 décembre 2004 à 08:47:08 | Re : Problème avec quick sort avec des chaines de caractères

ymca2003

Réponse acceptée !
tab[parcourstab] = mot;

=> tu écrase le buffer alloué par le tableau static à chaque itération, seulle la dernière sera la bonne.
Pour recopier une chaine, c'est strcpy
mardi 7 décembre 2004 à 10:59:47 | Re : Problème avec quick sort avec des chaines de caractères

bakka72

ah oui merci bcp sui tro bete moi
en plus javai deja utilisé la fonction strcpy sui tro deg lol

merci encore
mardi 7 décembre 2004 à 18:36:26 | Re : Problème avec quick sort avec des chaines de caractères

magic_Nono

Membre Club
bakka : "sui tro bete moi "

excellent...

nanta bakka aurrais tu pu dire encore


nan, ce n'est pas grave, une erreur d'init, ça arrive
++


Cette discussion est classée dans : fichier, int, tab, char, cpt


Répondre à ce message

Sujets en rapport avec ce message

problème d'ouverture et de lecture d'un fichier [ par Trinity_vv ] J'ai fais un code d'ouverture et d'affichage d'un fichier, tout marchait très bien. Sans exagérer 10 minutes plus tard, je le régénére et il ne veut p Probleme dans mon programme password [ par Jarod1980 ] Salut tout le monde,Voilà j'ai un problème dans mon programme de password. Je m'explique: J'ai développé en premier lieu un programme où l'utilisateur Probleme dans mon prog password dans la gestion ' * ' [ par Jarod1980 ] Salut,Voila j'ai développé un programme de password qui récupère le password crypté dans un fichier et le compare au password rentré par l'utilisateur problème de char [ par minet03 ] Bonjour c'est encore le débutant, voilà le code :#include #include #include char inverser_char(char variable[]){ int longueur = strlen(variable); // l Lecture d'un fichier quelconque [ par jb60 ] Bonjour,J'aimerais savoir si il est possible de lire les données d'un fichier quelconque lorsqu'on ne connait pas le format du fichier d'origine... Je passage de MSDOS à win32 Application: problème de CAST! [ par malik7934 ] Hello,en un mot : H-E-L-P-!-!-!J'ai un problème qui m'énerve depuis deux jours...Si j'exécute le programme suivant dans VC++:#include "mycrypt.h"#prag Un pointeur qui disparait ! [ par benjiiim94 ] Bonjour, J'ai un gros problème avec un pointeur ! Je devellope une fonction qui recherche un mot dans un texte afin de stocker l'indice de début et d exclusion d'un Intervalle dans un tableau ... [ par pirana ] Bonjour à tous , j'aimerais sauté un intervale dans un textevoici mon code je pense que ca sera plus explicite :)data[]={01234567ABCDEFLI01234567ABCDE probleme de pointeur [ par jypees ] Bonjour a tous. Voila j'ai l'habitude de faire de la prog sur unix et la je viens de me lancer sur windows (lol) et j'ai un petit probleme car je ne s prog en C, ecriture puis lecture de donnees de donnees dans un fichier fichier txt [ par 01472583690 ] Salut a tous ! voici mon probleme : Dans mon programme l'utilisateur doit entrer des donnees ( des char (nom, ville .....) , ainsi que des int ( age,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,778 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales