zalli
Messages postés20Date d'inscriptionjeudi 16 avril 2009StatutMembreDernière intervention20 novembre 2009
-
20 nov. 2009 à 15:13
Bonjour,
j'aimerais de l'aide pour réaliser un chainage avant par profondeur d'abord et un chainage arrière(max prémisses).
voici mon code: (la suppression ne marche pas encore)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define T_MAX 1000
int recherche( char*nomf, char c)
{
FILE *fich=fopen(nomf,"r+");
char ch;
while (!feof(fich))
{
ch= fgetc(fich);
if (ch==c) {fclose(fich);
return 1;}
}
fclose(fich);
return 0;
}
void AjoutFinBf(char* nomf,char *ch)
{ FILE* fich=NULL;
fich=fopen(nomf,"a+");
if( fich==NULL) printf("\nerreur d'ouverture");
else if (recherche("C:\\BF.txt",ch[0])==0)
{fputs(ch,fich);
fputs("\n",fich);
fclose(fich);}
else
printf("le fait existe deja!");
}
if (c!=*ch) {
AjoutFinBr("C:\\C\\R.txt",&c);printf("%c",c);}
nomf="C:\\R.txt";}
fclose(fich);}
}
int main(int argc, char *argv[])
{ char ch[T_MAX]="";
char* bf[T_MAX];
char*br[T_MAX];
char*but[T_MAX];
int n=0;
char rep,rep1,rep2;
do
{
system("cls");
printf("\n1-Choisir votre BC");
printf("\n2-Affichage");
printf("\n3-Mise a jour");
printf("\n4-Chainage");
printf("\n\n\n0-Exit\n");
fflush(stdin);
rep=getchar();
if(rep=='1') {
printf("Donner le lien vers la BF: ");
scanf("%s",bf);
printf("Donner le lien vers la BR: ");
scanf("%s",br);
printf("Donner le lien vers le BUT: ");
scanf("%s",but);
}
else {
*bf="C:\\BF.txt";
*br="C:\\BR.txt";
*but="C:\\BUT.txt";
}
if(rep=='2') {
system("cls");
printf("\n1-Afficher la base de faits ");
printf("\n2-Afficher la base de regles ");
printf("\n3-Afficher la base de connaisances ");
printf("\n\n\n0-Exit\n");
do
{
fflush(stdin);
rep1=getchar();
if(rep1=='1'){
printf("la base des faits:\n");
lecture("C:\\BF.txt");
printf("\n");
}
if(rep1=='2'){printf("la base des regles:\n");
lecture("C:\\BR.txt");
printf("\n");
}
if(rep1=='3'){printf("la base de connaissance;\n");
printf("la base des faits:\n");
lecture("C:\\BF.txt");
printf("\nle but:\n");
lecture("C:\\BUT.txt");
printf("\nla base des regles:\n");
lecture("C:\\BR.txt");
printf("\n");
}
}while(rep1!='0');
}
if(rep=='3') {
do
{
system("cls");
printf("\n1-Ajout ");
printf("\n2-Suppression ");
printf("\n3-Modification ");
printf("\n\n\n0-Exit\n");
fflush(stdin);
rep1=getchar();
if(rep1=='1') {
system("cls");
printf("\n1-Ajouter un fait");
printf("\n2-Ajouter une regle");
printf("\n\n\n0-Exit\n");
do
{
fflush(stdin);
rep2=getchar();
if(rep2=='1') {printf("donner un nouveau fait: \n");
scanf("%s",ch);
AjoutFinBf("C:\\BF.txt",ch);}
if(rep2=='2') {printf("saisir regle: fait1,fait2....,faitn:resultat\n");
scanf("%s",ch);
AjoutFinBr("C:\\BR.txt",ch);}
}while(rep2!='0');}
if(rep1=='2') {
system("cls");
printf("\n1-Supprimer un fait");
printf("\n2-Supprimer une regle");
printf("\n\n\n0-Exit\n");
do
{
fflush(stdin);
rep2=getchar();
if(rep2=='1') {printf("donner le fait a supprimer\n");
scanf("%s",ch);
supBf("C:\\BF.txt",ch);}
if(rep2=='2') {printf("donner la regle a supprimer\n");
scanf("%s",ch);
supBr("C:\\BR.txt",ch);}
}while(rep2!='0');
}
if(rep1=='3'){
system("cls");
printf("\n1-Modifier un fait");
printf("\n2-Modifier une regle");
printf("\n3-Modifier le but");
printf("\n\n\n0-Exit\n");
do
{
fflush(stdin);
rep2=getchar();
/*if(rep2=='1') {printf("donner le fait a modifier\n");
scanf("%s",ch);
supBf("C:\\BF.txt",ch);
printf("donner le nouveau fait\n");
scanf("%s",ch);
AjoutFinBf("C:\\BF.txt",ch);
}*/
/*if(rep2=='2') {printf("donner la regle a modifier\n");
scanf("%s",ch);
supBr("C:\\BR.txt",ch);
printf("donner la nouvelle regle\n");
scanf("%s",ch);
AjoutFinBr("C:\\BR.txt",ch);
}*/
/*if(rep2=='3') {
supBf("C:\\BUT.txt",ch);
printf("donner le nouveau but\n");
scanf("%s",ch);
AjoutFinBf("C:\\BUT.txt",ch);
}*/
}while(rep2!='0');}
}while(rep1!='0');}
if(rep=='4'){
system("cls");
printf("\n1-Realiser un chainage avant");
printf("\n2-Realiser un chainage arriere");
printf("\n\n\n0-Exit");
}
}while(rep!='0');
/*if(recherche("C:\\BUT.txt",ch[0])==0) printf("le but n'est pas encore attend\n");
else {printf("le but est attend\n");
rep=8;}*/
//getch();
return 0;
}