Vocabulaire..

Description

Permet de se faire interroger par le prog sur le vocabulaire contenu ds un fichier txt externe.
Il permet aussi de l'éditer, le visualiser...
pour le fichier txt, la syntaxe est la suivante :
mot_etranger=mot_francais. (ne pas oublier le point et ne pas rajouter de ligne vierge a la fin du fichier)
Un sample de fichier avec du vocabulaire est contenu dans le zip..

Source / Exemple :

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int menu();


int main(){

FILE *fichier;
int choix;
char nomdufichier[30]="c:\\vocabulaire.txt";
char ligne[350][1000];
char francais[20];
char anglais[20];
struct score{int points; int rapport;} utilisateur;
int i;
int temp;
int passage=0;
int curseurfr;
char reponse[20];
int juste;
int avancement;
int curseur;
int test;
int alea[1000];
int var=0;
int rempli;
int tour;


srand(time(NULL)); // on initialise les nombres aleatoires sur l'heure


do { // si fichier pas dans rep par defaut

	
	cout<<"\nentrez le chemin pour acceder au fichier txt du vocabulaire (ex : c:\\vocabulaire.txt) :";
	cin>>nomdufichier;
	fichier=fopen(nomdufichier,"r");
	if (!fichier){cout<<"\nce fichier n'existe pas";}

}while (!fichier);

fclose (fichier);

cout<<"fichier detecte..\n\n";



choix=menu();

do {


	switch (choix){
	
	case 1:
		cout<<"\nentrez le chemin pour acceder au fichier : exemple : c:\\vocabulaire.txt"<<endl;
		gets(nomdufichier);
		choix=menu();
	break;
	
	case 2:
		cout<<"\n          interrogation : \n";
utilisateur.points=0;
	fichier=fopen(nomdufichier,"r"); // on ouvre le fichier en lecture.
		i=0;
		
		if (!fichier){
		cout<<"erreur";
		exit(-1);
		}


avancement=-1;
i=0;
		while (!feof(fichier)){

			avancement++;
			
			ligne[avancement][i]=fgetc(fichier);	
			
			if (ligne[avancement][i]=='\n'){
				avancement=-1;
				i++;

				}	

	
			
		}
utilisateur.rapport=i+1;


temp=i;
passage=0;
curseurfr=0;

//for (i=0;i<=temp;i++){

for (tour=0;tour<=temp+1;tour++){alea[tour]=0;} // on met tt a zero
	
rempli=1;


while (rempli!=0){
	
	
	
	do{ // on cherche un nb au hasard dans le nb de mots, qui n'a pas ete deja pris
var=rand()%(temp+1);

if (alea[var]==0){
i=var;

}
}while (alea[var]!=0);

alea[i]=1; // on dis que le choix du nb est fait

rempli=0;
for (avancement=0;avancement<temp;avancement++)  // pour verifier s'il n'y a plus de choix
{if (alea[avancement]==0){rempli++;}}
	
	
	
	
	
	
	
	
	passage=0;
curseurfr=0;

	for (curseur=0;ligne[curseur][i]!='.';curseur++){  // on sépare le mot francais de la traduction dans anglais[} et francais []
	
		if (passage==0){
		
			if (ligne[curseur][i]=='='){ passage++;
			anglais[curseur]='\0';
			}else{
				anglais[curseur]=ligne[curseur][i]; }
		
		

		}else{

		francais[curseurfr]=ligne[curseur][i];
		curseurfr++;
	if (ligne[curseur+1][i]=='.'){  francais[curseurfr]='\0';       }		

		}

	}



cout<<"donne la traduction de ";
for (curseur=0;francais[curseur]!='\0';curseur++){
cout<<francais[curseur];
}
cout<<":  ";
cin>>reponse;
juste=0;
// maintenant on test la reponse

for (curseur=0;anglais[curseur]!='\0';curseur++){

	if (reponse[curseur]==anglais[curseur]){juste++;}
}

if (juste==curseur){

	cout<<"reponse juste\n";

	utilisateur.points++;

}else {

	cout<<"mauvaise reponse\nla bonne reponse est : ";

	for(curseur=0;anglais[curseur]!='\0';curseur++){
	cout<<anglais[curseur];

	}
	alea[i]=0; // on remet le compteur de ce mot a zero pour etre reintereogé dessu
	rempli=1; // si on a faut au dernier mot, on recommence
	utilisateur.rapport++; // paske yaura un mot en plus
cout<<"\n\n";}

} 



cout<<"\nvous avez eu "<<utilisateur.points<<" bonnes reponses sur "<<utilisateur.rapport<<" mots";
if (utilisateur.points<(3*utilisateur.rapport)/4){cout<<"\nil faut revoir son vocabulaire";}
else {cout<<"\nbien";}








cout<<"\n\n";
fclose(fichier);
choix=menu();

	break; // interrogattion

	case 3:
int ajout;







	fichier=fopen(nomdufichier,"r"); // on ouvre le fichier en lecture.
		i=0;
		
		if (!fichier){
		cout<<"erreur";
		exit(-1);
		}


avancement=-1;
i=0;
		while (!feof(fichier)){

			avancement++;
			
			ligne[avancement][i]=fgetc(fichier);	
			
			if (ligne[avancement][i]=='\n'){
				avancement=-1;
				i++;

				}	
}

fclose(fichier);

ajout=i+1;





char ajouter[40];



fichier=fopen(nomdufichier,"w"); // on ouvre le fichier en lecture
if (!fichier){cout<<"erreur"; exit(-1);}


i=0;




cout<<"entrez le mot anglais et sa traduction de cette maniere\nmot_anglais=mot_francais. (ne pas oublier le point a la fin, ni le egal, ne pas mettre d'espaces)"<<endl;
scanf("%s",ajouter);

for (avancement=0;avancement<39;avancement++){

	ligne[avancement][ajout]=ajouter[avancement];  // on recopie la ligne a ajouter a la suite du tableau avec tt le fichier

}


for (i=0;i<=ajout;i++){
//cout<<i;
	for (avancement=0;ligne[avancement][i]!='.' && avancement<39;avancement++){
//	cout<<"av:"<<avancement;
		fputc (ligne[avancement][i],fichier);
		
		if (ligne[avancement+1][i]=='.'){fputc('.',fichier);
		if (i!=ajout) {
			fputc('\n',fichier); }  // on fait le retourd a la ligne, sauf pour la derniere ligne.
		
		}

	
	}


}


fclose(fichier);


choix=menu();


	break; // ajout

	case 4:

	fichier=fopen(nomdufichier,"r"); // on ouvre le fichier en lecture.
		i=0;
		
		if (!fichier){
		cout<<"erreur";
		exit(-1);
		}


avancement=-1;
i=0;
		while (!feof(fichier)){

			avancement++;
			
			ligne[avancement][i]=fgetc(fichier);	 // on copie tt le fichier ds ligne [][]
			
			if (ligne[avancement][i]=='\n'){
				avancement=-1;
				i++;

				}	

	
			
		}




//aff test
		temp=i;
		test=0;
	
		int sertarien=0;
		
		for (i=0;i<temp+1;i++){
			curseur=0;
			test=0;
			for (curseur=0;test==0;curseur++){
			
				cout<<ligne[curseur][i];
				
				if (ligne[curseur][i]=='.'){test++;}

			}
		cout<<"\n";
		if (i%20==0 && i!=0){cout<<"\nentrez un nombre pour continuer "; cin>>sertarien; cout<<"\n";}
		}
		fclose(fichier);
cout<<"\n\n";
	 //fin aff test
		///////
choix=menu();
		break; // visualisation
				

	}
	if (choix==6){
		cout<<"programme par kjus\n";
		cout<<"beta2.5"<<endl;
			choix=menu();
	
	}


}while (choix!=5);






fclose(fichier);


return 0;}



int menu(){

int key;

cout<<"1. changer de fichier vocabulaire \n";
cout<<"2. etre interroge..\n";
cout<<"3. ajouter un mot\n";
cout<<"4. visualiser fichier\n5. quitter\n6. about\n";

cin>>key;

return key;}

Conclusion :

attention, pas gestion des erreurs de syntaxe ds le fichier txt.
Si il y a une erreur, le prog va surement rentrer en boucle sans fin..

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.