begin process at 2010 09 06 11:59:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > TEXT GO V 3.0 :UTILISATION DES ABR POUR LES FICHIERS TEXT !!!

TEXT GO V 3.0 :UTILISATION DES ABR POUR LES FICHIERS TEXT !!!


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caractères Niveau :Débutant Date de création :30/07/2004 Date de mise à jour :30/07/2004 17:32:20 Vu / téléchargé :3 334 / 353

Auteur : brenntengel

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

ABR :Arbre binaire de recherche pour extraires les Mots d'un fichier text.
Grace au ABR on peut effectuer des recherche trés rapide plus rapides que les
tableau ou les listes chainées .
Pour cette verison :j'ai ajouter la fonction  de recherche d'une partite d'un Mot
Ce programmes affcihe aussi le nombres de mots ainsi que les occurences des mots
et les lignes ou il sont trouve ....

Source

  • ZIP :Dans le ZIP il y'a un programmes supplimentaires (Comprendre_plus)
  • pour comprendres mieux la recherche d'une partie d'un mots. ;-)
ZIP :Dans le ZIP il y'a  un programmes supplimentaires (Comprendre_plus)
pour comprendres mieux la recherche d'une partie  d'un mots. ;-)

 Conclusion

Normallement c'est   la derniere Version de ce projet :
NB :J'ai voulu  ajoute la nouvelle fonction (recherche d'une partie d'un mot)
dans ce programme au lieux de la mettre a part parce que j'ai pense ca serait mieux .....;-)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 juillet 2004 17:32:20 :
La derniere Version De TEXT GO.

 Sources du même auteur

Source avec Zip TEXT GO V 2.0 :EXTAIRE LE N° MOTS ET N° LIGNE D'UN FICHIER T...
Source avec Zip TEXT GO : RECHERCHE LE NOMBRES DE MOTS DANS UN FICHIER TEXT....
Source avec Zip FACTORIELLE AVEC MFC (TRÉS SIMPLE)

 Sources de la même categorie

Source avec Zip LIBRAIRIE LANGUAGES par astro53
FONCTION : CHAR * AJUSTERTAILLECHAINE() par Rockanos
Source avec Zip RECHERCHE D'ANNAGRAMMES par Torin
GESTION DE CHAINE DE CARACTÉRE EN C++ AVEC NSTRING par xmustapha
Source avec Zip COMMENTER CODE C <=> ASM (WIN64) par BruNews

Commentaires et avis

Commentaire de Maegis le 02/08/2004 11:23:46

J'ai n'ai pas encore regardé le code en entier mais j'ai vu que tu lisais le fichier caractère par caractère! Ca réduit les performances de manière conséquente. Utilise un buffer!

Commentaire de brenntengel le 02/08/2004 12:33:16

Merci bq pour le commentaire.
pour la lecture de fichier  j'ai lu caractère par caractère  
parceque il faut que je determine le nombres de mots ainsi que le nombres des lignes et aussi la ligne ou ce trouve chaque mots.

Comment tu utilise un buffer dans ce cas ?

ce code ce base sur l'utilisation des ABR(arbre binaire de recherche)

pour chercher un mot avec une vitesse  tres importante
d'apres la longueur de mots on se positione dans le noeuds et on cherche dans cette sous arbre.et puis on compare les caractères
je te laise decouvrir le reste ...;-)


Commentaire de DevGizmo le 02/08/2004 13:18:45

Effectivement,
Mais pourquoi ne pas utiliser "strtok" pour decouper la chaine selon les blancs (et donc les mots).

Tu "malloc" un buffer a la taille du fichier (+1 pour le null terminate) et ensuite tu fais du strtok, a chaque tour de boucle du strtok tu peux incrementer un compteur pour le nombre de mot et si dans le morceux extrait il y a une LINE FEED, tu peux comptabiliser aussi une ligne supplementaire...

Je n'ai pas vu ton code mais je pense que je ferais comme ca.

@+ et bonne prog

Commentaire de DevGizmo le 02/08/2004 14:54:47

Tiens essaye donc ca...
A priori ca fonctionne...........

unsigned long MyGetFileSize(FILE *hFile)
{
unsigned long lSize = 0; // On init la taille du fichier
long lCurrPos = ftell( hFile ); // On recupere la position du curseur de fichier

// On se positionne a la fin du fichier
fseek( hFile, 0, SEEK_END );

// On recupere la position du curseur de fichier et donc la taille en octets du fichier
lSize = ftell( hFile );

// On se replace la ou ete le curseur dans le fichier
fseek( hFile, lCurrPos, SEEK_SET );

// On retourne la taille du fichier
return lSize;
}

void Loading_File(unsigned long *lpNbWord, unsigned long *lpNbLine)
{
FILE *hFile = NULL;
char szFileName[MAX_PATH];
char *lpFile = NULL;
char *lpRead = NULL;
unsigned long lFSize = 0;
unsigned long lNbLine = 1;
unsigned long lNbWord = 0;
BOOL bStop = false;
tMots tmMots;

do
{
printf("Donner le chemin de fichier SRC . . .\n");

// On lit le flux de la console
        scanf("%s", szFileName);

// On essaye d'ouvrir le fichier passe
hFile = fopen(szFileName,"r+b");                 //ouvrir un ficher

// Si le fichier n'existe pas
if(hFile == NULL)
printf( "Fichier inexistant !!!\n" );

} while(hFile == NULL);

// On recupere la taille du fichier
lFSize = MyGetFileSize( hFile );

// Protection si le fichier est vide
if( lFSize <= 0 )
return;

// On alloue un buffer a la taille du fichier +1 pour le null terminate
lpFile = (char *)malloc( lFSize + 1 );

// On n'a pas reussi a allouer le buffer, on ferme le fichier et on sort...
if( lpFile == NULL )
{
fclose( hFile );
return;
}

// On nettoie le buffer
memset( lpFile, 0, lFSize + 1 );

// On lit le fichier d'un seul bloc et on le met dans le buffer alloue
if( !fread( lpFile, lFSize, 1, hFile ) )
{
// si ca se passe mal: on desalloue le buffer et on ferme
// le fichier avant de sortir
free( lpFile );
fclose( hFile );
return;
}
// On ferme le fichier, il n'y a plus besoin qu'il soit ouvert
fclose( hFile );

// On recupere le premier mot
lpRead = strtok( (char *)lpFile, " " );

// Si il n'existe pas, on desalloue le buffer et on sort
if( lpRead == NULL)
{
free( lpFile );
return;
}

// On a recupere le premier mot
lNbWord++;

// On recupere le mot en cour
strcpy( tmMots.mot, lpRead );

// on recupere la ligne dans laquelle se trouve le mot
tmMots.Line = lNbLine;

// On recupere la taille du mot
tmMots.Long = strlen(lpRead);

// On ajoute le mot a l'arbre
arbre = Creation_Arbre( arbre, tmMots );

while( true )
{
// On recupere le mot suivant
lpRead = strtok( NULL, " " );
if( lpRead == NULL )
break;

// On a trouve un mot de plus
lNbWord++;

// On recupere le mot en cour
strcpy( tmMots.mot, lpRead );

// On recupere la ligne dans laquelle se trouve le mot
tmMots.Line = lNbLine;

// On recupere la taille du mot
tmMots.Long = strlen(lpRead);

// On ajoute le mot a l'arbre
arbre = Creation_Arbre( arbre, tmMots );

// Si dans on trouve un line feed
if( strstr( lpRead, "\r") != NULL )
lNbLine++;
}

// On desalloue le buffer
free( lpFile );

// On renseigne les params
*lpNbLine = lNbLine;
*lpNbWord = lNbWord;
}

Commentaire de DevGizmo le 02/08/2004 14:55:31

<pre>
unsigned long MyGetFileSize(FILE *hFile)
{
unsigned long lSize = 0; // On init la taille du fichier
long lCurrPos = ftell( hFile ); // On recupere la position du curseur de fichier

// On se positionne a la fin du fichier
fseek( hFile, 0, SEEK_END );

// On recupere la position du curseur de fichier et donc la taille en octets du fichier
lSize = ftell( hFile );

// On se replace la ou ete le curseur dans le fichier
fseek( hFile, lCurrPos, SEEK_SET );

// On retourne la taille du fichier
return lSize;
}

void Loading_File(unsigned long *lpNbWord, unsigned long *lpNbLine)
{
FILE *hFile = NULL;
char szFileName[MAX_PATH];
char *lpFile = NULL;
char *lpRead = NULL;
unsigned long lFSize = 0;
unsigned long lNbLine = 1;
unsigned long lNbWord = 0;
BOOL bStop = false;
tMots tmMots;

do
{
printf("Donner le chemin de fichier SRC . . .\n");

// On lit le flux de la console
        scanf("%s", szFileName);

// On essaye d'ouvrir le fichier passe
hFile = fopen(szFileName,"r+b");                 //ouvrir un ficher

// Si le fichier n'existe pas
if(hFile == NULL)
printf( "Fichier inexistant !!!\n" );

} while(hFile == NULL);

// On recupere la taille du fichier
lFSize = MyGetFileSize( hFile );

// Protection si le fichier est vide
if( lFSize <= 0 )
return;

// On alloue un buffer a la taille du fichier +1 pour le null terminate
lpFile = (char *)malloc( lFSize + 1 );

// On n'a pas reussi a allouer le buffer, on ferme le fichier et on sort...
if( lpFile == NULL )
{
fclose( hFile );
return;
}

// On nettoie le buffer
memset( lpFile, 0, lFSize + 1 );

// On lit le fichier d'un seul bloc et on le met dans le buffer alloue
if( !fread( lpFile, lFSize, 1, hFile ) )
{
// si ca se passe mal: on desalloue le buffer et on ferme
// le fichier avant de sortir
free( lpFile );
fclose( hFile );
return;
}
// On ferme le fichier, il n'y a plus besoin qu'il soit ouvert
fclose( hFile );

// On recupere le premier mot
lpRead = strtok( (char *)lpFile, " " );

// Si il n'existe pas, on desalloue le buffer et on sort
if( lpRead == NULL)
{
free( lpFile );
return;
}

// On a recupere le premier mot
lNbWord++;

// On recupere le mot en cour
strcpy( tmMots.mot, lpRead );

// on recupere la ligne dans laquelle se trouve le mot
tmMots.Line = lNbLine;

// On recupere la taille du mot
tmMots.Long = strlen(lpRead);

// On ajoute le mot a l'arbre
arbre = Creation_Arbre( arbre, tmMots );

while( true )
{
// On recupere le mot suivant
lpRead = strtok( NULL, " " );
if( lpRead == NULL )
break;

// On a trouve un mot de plus
lNbWord++;

// On recupere le mot en cour
strcpy( tmMots.mot, lpRead );

// On recupere la ligne dans laquelle se trouve le mot
tmMots.Line = lNbLine;

// On recupere la taille du mot
tmMots.Long = strlen(lpRead);

// On ajoute le mot a l'arbre
arbre = Creation_Arbre( arbre, tmMots );

// Si dans on trouve un line feed
if( strstr( lpRead, "\r") != NULL )
lNbLine++;
}

// On desalloue le buffer
free( lpFile );

// On renseigne les params
*lpNbLine = lNbLine;
*lpNbWord = lNbWord;
}
</pre>

Commentaire de brenntengel le 04/08/2004 12:54:10


Merci bq pour le commontaire !!
J'avous que c'est la 1ere fois que je vois
la commande strtok.j'ai trouver un exemple
dans le help et j'ai compris le fonctionnement,
et ca reduit bq mon code ca c'est sure !!
j'ai vu ton code mais j'ai pas fini ca me semble
interesante.ta methode est bien meilleur
que la mienne je l'avous
(si ca marche chapeau vraiment !!!)

Essaye de regrder la 2eme partie et la 3eme
elle sont plus interressante !!!

Allez A+ et merci pour la methode je vais
l'adopter !!;-)



Commentaire de Yolak le 28/03/2007 09:41:44

Bonjour !
Je suis pas très fort en C mais je crois bien qu'il manque une fonction dans le programme Text GO.
j'utilise dev cpp et il me dit que "toupper" n'est pas déclaré, et en effet sa déclaration ne figure nulle part.
Quelle est l'utilitée de ce "toupper"??

Commentaire de brenntengel le 28/03/2007 14:36:33

Salut,
ToUpper c'est une fonction predefine dans la librarie "ctype.h"
elle permet de verifier si un carractere est en Majuscule ou non :-)
a propo le programme marche bien compile le avec MSVC++
ca devrait marché sans probleme.

Commentaire de Yolak le 28/03/2007 15:22:19

Effectivement, j'ai rajouté la bibliothèque et fait quelques modifs et ça marche plutôt bien!¨!
Parcontre, les fautes d'orthographes sont assez énormes!!!

Commentaire de brenntengel le 28/03/2007 16:16:00

:-O Désole pour les fautes d'orthographes !!!
j'espre que ca marche bien mnt !!

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
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 : 0,811 sec (4)

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