Verification d'orthographe

Fermé
pépereF Messages postés 36 Date d'inscription dimanche 11 décembre 2005 Statut Membre Dernière intervention 25 janvier 2008 - 16 janv. 2008 à 11:34
 bouba - 4 janv. 2010 à 15:10
Bonjour,
voici un code de verification d'orthographe, il compil sans erreurs mais lors de l'execution il ne retouve pas le fichier dico.dat (daillleur il ne me demande même pas de le remplir), je travail sur visual studio 2005 ou sur devC++(sur devc++ je n'arrive même pas a avoir la console d'application).
pouvez-vous m'aider

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

merci d'avance

2 réponses

pépereF Messages postés 36 Date d'inscription dimanche 11 décembre 2005 Statut Membre Dernière intervention 25 janvier 2008 2
25 janv. 2008 à 11:53
bonjour,
Comment puis-je faire pour créé le fichier que demande ce programme?
merci d'avance
1
As-tu résolu ton problème car actuellement je planche sur le même problème que toi.

Je suppose que tu fais les cours Educatel.

J'ai résolu le problème si cela peut t'aider, demandes-moi

jaguar57
0
salut

j'ai le même pb pourriez -vous m'aider
0