|
|
|
|
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<conio.h>
#define MAXMOTS 100
#define LONGMOT 20
char dico[MAXMOTS][LONGMOT];
char mot[LONGMOT];
char *pmot;
FILE*f;
//declaration des fonctions
short dichotomie(char dico[MAXMOTS][LONGMOT],char *mot,short nb_mot);
void sup_ponc(char *pmot);
void sup_maj(char *pmot);
void ajout(char dico[MAXMOTS][LONGMOT],char *mot,short nb_mot);
//Fonction principale
int main(int argc,char*argv[])
{
int i,res;
extern int strcmp();
short nb_mot=0;
char touche;
//ouverture du dictionnaire
//Test que le fichier dico s'ouvre bien
if ((f=fopen("dico.dat","r")) == NULL)
printf("\nImpossible d'ouvrir le fichier Dico, creation d'un nouveau Dico");
/*Puisqu'il est impossible d'ouvrir le fichier dico, la fin du programme permetra
d'en créé un nouveau avec fopen("dico.dat","w")*/
else
{
/*remplissage du tableau dico par les mots presents dans le fichier dico*/
while (fscanf(f,"%s",mot) !=EOF)
{
strcpy(dico[nb_mot],mot);
nb_mot += 1;
}
/*Fermeture du fichier Dico*/
fclose(f);
}
/*tri en mémoire du tableau Dico*/
qsort((char **)dico,nb_mot,LONGMOT,strcmp);
/*Ouverture du fichier a vérifier*/
/*Test que le fichier s'ouvre bien*/
if ((f=fopen("texte.dat","r")) == NULL)
printf("\nImpossible d'ouvrir le fichier texte");
/*Puisqu'il est impossible d'ouvrir le fichier, le if nous améne à la fin du
programme*/
else
{
pmot=mot;
while (fscanf(f,"%s",mot) != EOF)
{
//appel de la fonction permettant de suprimer la ponctuation
sup_ponc(pmot);
/*appel de la fonction permettant de remplacer les majuscules
par des minuscules*/
sup_maj(pmot);
//Appel de la fonction dichotomie
res=dichotomie(dico,mot,nb_mot);
/*invite suivant le resultat de la dichotomie à rajouter le mot
dans le dictionnaire*/
if (res == 0)
{
printf("\nVoulez-vous enregistrer le mot '%s' dans le dico (o)oui ou (n)non?\n",mot);
do
{
touche=getch();
}
while (touche!='o'&&touche!='n');
//choix suivant le resultat de l'operateur
if (touche=='o')
{
ajout(dico,mot,nb_mot);
nb_mot+=1;
}
}
}
//fermeture du fichier texte
fclose(f);
//Ouverture du fichier dico en mode écriture
f=fopen("dico.dat","w");
//enregisrement dans le dico du tableau
for (i=0;i<nb_mot;i++)
fprintf(f,"%s\n",dico[i]);
//Fermeture du fichier dico
fclose(f);
}//fin du if testant l'ouverture du fichier texte
return 0;
}
//FONCTION DICHOTOMIE
short dichotomie(char dico[MAXMOTS][LONGMOT],char *mot, short nb_mot)
{
//déclaration des variables
int i=0,j=nb_mot,k,res;
//Traitement
while ((j-i)>1 && res!=0)
{
k=(i+j)/2;
res=strcmp(dico[k],mot);
if (res>0)
j=k;
else
i=k;
/*ce if afin d'atteindre le mot du tableau dico[0]
puisque j-i ne peut qu'être strictement supérieur à 1*/
if (k==0 && res!=0)
res=strcmp(dico[0],mot);
}
//Affectation des valeurs retournées
if (res!=0)
res=0;
else
res=1;
return res;
}
//FONCTION SUPPRESSION DE LA PNCTUATION
void sup_ponc(char *pmot)
{
//Déclaration des variables locales
int i=0,j=0;
char c;
//Traitement
while (pmot[i]!=NULL)
{
c=pmot[i];
if (isalpha(c))
{
pmot[j]=c;
j++;
}
i++;
}
pmot[j]=0;
}
//FONCTION SUPPRESSION DES MAJUSCULES
void sup_maj(char *pmot)
{
//Déclaration des variables locales
int i=0;
char c;
//Traitement
while (pmot[i]!=NULL)
{
c=pmot[i];
if (isupper(c))
c=tolower(c);
pmot[i]=c;
i++;
}
pmot[i]=0;
}
//FONCTION AJOUT
void ajout(char dico[MAXMOTS][LONGMOT],char *mot,short nb_mot)
{
//Copie du nouveau mot dans le tableau
strcpy(dico[nb_mot],mot);
//Tri en mémoire du tableau dico
qsort((char**)dico,nb_mot,LONGMOT,strcmp);
}
Configuration: Windows XP Internet Explorer 7.0
|
bonjour,
Comment puis-je faire pour créé le fichier que demande ce programme? merci d'avance |
Résultats pour verification d'orthographe
Résultats pour verification d'orthographe
Résultats pour verification d'orthographe
Résultats pour verification d'orthographe
Résultats pour verification d'orthographe