Accueil > > > SYSTEM EXPERT
SYSTEM EXPERT
Information sur la source
Description
Un system expert est une application logicielle qui composé une base de connaissance (base de fait et base de regle) et moteur inférence qui réalise algorithme ce programme fait la création de base de fait et base de regle et peut ajouter un fait ou une régle et peut réaliser aussi algorithme de moteur d'inference et peut afficher les donné de la base de connaissance et résultats d'éxécution moteur d'inférence ... E-mail :kader.missoum@yahoo.fr 2008 merci...
Source
- #include <iostream.h>
- #include <conio.h> //getch
-
- struct liste { //déclaration nécissaire
- char el;
- liste * next;
- };
-
- struct fait {
- char el;
- char test;
- fait * next;
- };
-
- struct regle {
- liste * condition;
- liste * resultat;
- char testr;
- regle * suivant;
- };
-
- //##############################################################
-
- fait * Creation_Base_Fait (fait * F){
- int k;
-
- F = new fait;
- cout<<"\nDonner une base fait : ";
- cin>> F->el;
- F->test = '#';
- F->next = NULL;
-
- fait * p = F;
-
- cout<<"\nContinier ... 0/1 : "; cin>> k;
- while (k != 0 ) {
- fait * q = new fait;
- cout<<"\nDonner une base fait : ";
- cin>> q->el;
- q->test = '#';
- q->next = NULL;
- p->next = q;
- p = q;
-
- cout<<"\nContinier ... 0/1 : "; cin>> k;
- }
- return F;
- }
-
- //##############################################################
-
- liste * creation (int n){
- liste * tete = new liste;
- cin>> tete->el;
- tete->next = NULL;
- liste * q = tete;
-
- for (int i = 2; i<=n; i++){
- cout<<"--- ^ ---\n";
- liste * p = new liste;
- cin>> p->el;
- p->next = NULL;
- q->next = p;
- q = p;
- }
- return tete;
- }
-
- //------------------------------------------------
-
- regle * Creation_Base_Regle (regle * Rr){
- int n1,n2; int k;
- Rr = new regle;
-
- cout<<"\nDonner le nombre de condition : "; cin >> n1;
- Rr->condition = creation (n1);
- cout<<"\nDonner le nombre de resultat : "; cin >> n2;
- Rr->resultat = creation (n2);
- Rr->testr = '*';
- Rr->suivant = NULL;
-
- cout<<"\nContinier ... 0/1 : "; cin>> k;
- regle * p = Rr;
- while (k != 0 ) {
- regle * q = new regle;
-
- cout<<"\nDonner le nombre de condition : "; cin >> n1;
- q->condition = creation (n1);
- cout<<"\nDonner le nombre de resultat : "; cin >> n2;
- q->resultat = creation (n2);
- q->testr = '*';
- q->suivant = NULL;
- p->suivant = q;
- p = q;
-
- cout<<"\nContinier ... 0/1 : "; cin>> k;
- }
- return Rr;
- }
-
- //##############################################################
-
-
- void Ajoute_Regle(regle * &R) {
- int n1,n2;
- regle * nouveau = new regle;
-
- cout<<"\nDonner le nombre de condition : "; cin >> n1;
- nouveau->condition = creation (n1);
-
- cout<<"\nDonner le nombre de resultat : "; cin >> n1;
- nouveau->resultat = creation (n1);
-
- nouveau->testr = '*';
-
- nouveau->suivant = NULL;
-
- regle * p = R;
-
- while (p->suivant != NULL)
- p = p->suivant;
-
- p->suivant = nouveau;
-
-
- }
-
- //------------------------------------------------
-
- void Ajoute_Fait (fait * &F,char el, char x){
- fait * nouveau = new fait;
- nouveau->el=el;
- nouveau->test = x;
- nouveau->next = NULL;
-
- fait * p =F;
- while (p->next != NULL)
- p = p->next;
-
- p->next = nouveau;
- }
-
- //######################################################
-
- void Afficher_Base_Conn (fait * F, regle * R){
- fait * ff = F;
- while (ff != NULL){
- cout<< ff->el<<"\n";
- ff=ff->next;
- }
-
- regle * rr = R;
- while (rr != NULL){
- liste * p = rr->resultat;
- while (p != NULL){
- cout<< p->el<<"\n";
- p = p->next;
- }
-
- rr=rr->suivant;
- }
- }
-
- //######################################################
-
- int nombre_liste (liste * li){ //nombre d'élément d'une liste
- int cpt = 0;
- for (liste * p = li; p != NULL; p = p->next)
- cpt ++;
-
- return cpt;
- }
-
- //------------------------------------------------------
-
- int egual (liste * regcon , liste * L2){ //test égalité de deux listes
- int cpt = 0;
-
- for (liste *p2 = L2; p2!= NULL; p2=p2->next)
- for (liste *reg = regcon; reg!= NULL; reg=reg->next)
- if (p2->el == reg->el)
- cpt ++;
-
- if ((nombre_liste (L2) == cpt))
- return 1;
- else
- return 0;
- }
-
- //------------------------------------------------------------------
-
- int Moteur_Inference (liste * L ,fait * &F, regle * &R){
- regle * r = R; int n1;
-
- cout<<"\nDonner le nombre n : "; cin >> n1;
- L = creation (n1);
-
- while (r != NULL) {
- if (r->testr == '*')
- if ((nombre_liste (L)) == (nombre_liste (r->condition)))
- if(egual(r->condition, L ) == 1) {
- r->testr = '#';
- for (liste * p = r->resultat; p != NULL; p = p->next)
- Ajoute_Fait (F,p->el , '*');
-
- return 0;
- }
- r = r->suivant;
- }
- return 0;
- }
-
- //###################################################################
-
- void Afficher_Resultat (fait * M) { //affichage des résultat éxécution de moteur inference
- fait * p = M;
-
- while (p != NULL){
- if (p->test == '*')
- cout<<"\nResultat est : "<< p->el;
-
- p = p->next;
- }
- }
-
-
- //#########################################################################
- //#########################################################################
- //#########################################################################
-
- void afficherMenu(void) //affichage de menu
- {
-
- cout<<" --------------------------------------- \n";
- cout<<" | 1- saisir les faits . | \n";
- cout<<" | 2- Saisir les regles . | \n";
- cout<<" | 3- Ajouter une regle. | \n";
- cout<<" | 4- Ajouter un fait. | \n";
- cout<<" | 5- Affichager base de connaissance. | \n";
- cout<<" | 6- Moteur d inference. | \n";
- cout<<" | 7- affichage du resultats. | \n";
- cout<<" | 0- Quiter. | \n";
- cout<<" --------------------------------------- \n ";
- cout<<" Realiser Par MISSOUM Abdelkader \n";
- cout<<" en 18/01/2008 \n";
- cout<<" E-mail: kader.missoum@yahoo.fr \n";
- }
-
- int main(){
-
- regle *RRR = NULL; regle*R;
- fait *FFF = NULL ; fait *F;
- liste * LL; char K;
- int nn;
- char choix;
-
- do {
-
- afficherMenu();
- choix = getch();
- switch ( choix )
- {
- case '1':
- cout<<"\n-----------------------------------------------------\n";
- cout<<"\n\tCHARGEMENT BASE DE FAIT\n ";
- FFF = Creation_Base_Fait(F);
- getch();
- break;
-
- case '2':
- cout<<"\n-----------------------------------------------------\n";
- cout<<"\n\tCHARGEMENT BASE DE REGLE\n ";
- RRR=Creation_Base_Regle(R);
- getch();
- break;
-
- case '3':
- cout<<"\n-----------------------------------------------------\n";
- cout<<"\n\tAJOUTE UNE REGLE\n ";
- Ajoute_Regle(RRR);
- getch();
- break;
-
- case '4':
- cout<<"\n-----------------------------------------------------\n";
- cout<<"\n\tAJOUTE UN FAIT\n ";
- cout<< "\nDonner une base de fait : "; cin >> K;
- Ajoute_Fait(FFF,K, '#');
- getch();
- break;
-
- case '5':
- cout<<"\n-----------------------------------------------------\n";
- cout<<"\n\tAFFICHAGE BASE DE CONNAISSANCE\n ";
- cout<<"\nLa base de connaissance est : \n";
- Afficher_Base_Conn ( FFF, RRR);
- getch();
- break;
-
- case '6':
- cout<<"\n-----------------------------------------------------\n";
- cout<<"\n\tMOTEUR D'INFERENCE \n ";
- Moteur_Inference (LL,FFF , RRR);
- getch();
- break;
-
- case '7':
- cout<<"\n-----------------------------------------------------\n";
- cout<<"\n\tRESULTAT \n ";
- Afficher_Resultat (FFF) ;
- getch();
- break;
- }
- }
- while ( choix != '0' );
-
- cout<<"\n ----- LE PROGRAMME TERMINE -----";
-
-
- cin>>nn;
- return 0;
- }
-
-
-
-
-
-
-
-
-
-
#include <iostream.h>
#include <conio.h> //getch
struct liste { //déclaration nécissaire
char el;
liste * next;
};
struct fait {
char el;
char test;
fait * next;
};
struct regle {
liste * condition;
liste * resultat;
char testr;
regle * suivant;
};
//##############################################################
fait * Creation_Base_Fait (fait * F){
int k;
F = new fait;
cout<<"\nDonner une base fait : ";
cin>> F->el;
F->test = '#';
F->next = NULL;
fait * p = F;
cout<<"\nContinier ... 0/1 : "; cin>> k;
while (k != 0 ) {
fait * q = new fait;
cout<<"\nDonner une base fait : ";
cin>> q->el;
q->test = '#';
q->next = NULL;
p->next = q;
p = q;
cout<<"\nContinier ... 0/1 : "; cin>> k;
}
return F;
}
//##############################################################
liste * creation (int n){
liste * tete = new liste;
cin>> tete->el;
tete->next = NULL;
liste * q = tete;
for (int i = 2; i<=n; i++){
cout<<"--- ^ ---\n";
liste * p = new liste;
cin>> p->el;
p->next = NULL;
q->next = p;
q = p;
}
return tete;
}
//------------------------------------------------
regle * Creation_Base_Regle (regle * Rr){
int n1,n2; int k;
Rr = new regle;
cout<<"\nDonner le nombre de condition : "; cin >> n1;
Rr->condition = creation (n1);
cout<<"\nDonner le nombre de resultat : "; cin >> n2;
Rr->resultat = creation (n2);
Rr->testr = '*';
Rr->suivant = NULL;
cout<<"\nContinier ... 0/1 : "; cin>> k;
regle * p = Rr;
while (k != 0 ) {
regle * q = new regle;
cout<<"\nDonner le nombre de condition : "; cin >> n1;
q->condition = creation (n1);
cout<<"\nDonner le nombre de resultat : "; cin >> n2;
q->resultat = creation (n2);
q->testr = '*';
q->suivant = NULL;
p->suivant = q;
p = q;
cout<<"\nContinier ... 0/1 : "; cin>> k;
}
return Rr;
}
//##############################################################
void Ajoute_Regle(regle * &R) {
int n1,n2;
regle * nouveau = new regle;
cout<<"\nDonner le nombre de condition : "; cin >> n1;
nouveau->condition = creation (n1);
cout<<"\nDonner le nombre de resultat : "; cin >> n1;
nouveau->resultat = creation (n1);
nouveau->testr = '*';
nouveau->suivant = NULL;
regle * p = R;
while (p->suivant != NULL)
p = p->suivant;
p->suivant = nouveau;
}
//------------------------------------------------
void Ajoute_Fait (fait * &F,char el, char x){
fait * nouveau = new fait;
nouveau->el=el;
nouveau->test = x;
nouveau->next = NULL;
fait * p =F;
while (p->next != NULL)
p = p->next;
p->next = nouveau;
}
//######################################################
void Afficher_Base_Conn (fait * F, regle * R){
fait * ff = F;
while (ff != NULL){
cout<< ff->el<<"\n";
ff=ff->next;
}
regle * rr = R;
while (rr != NULL){
liste * p = rr->resultat;
while (p != NULL){
cout<< p->el<<"\n";
p = p->next;
}
rr=rr->suivant;
}
}
//######################################################
int nombre_liste (liste * li){ //nombre d'élément d'une liste
int cpt = 0;
for (liste * p = li; p != NULL; p = p->next)
cpt ++;
return cpt;
}
//------------------------------------------------------
int egual (liste * regcon , liste * L2){ //test égalité de deux listes
int cpt = 0;
for (liste *p2 = L2; p2!= NULL; p2=p2->next)
for (liste *reg = regcon; reg!= NULL; reg=reg->next)
if (p2->el == reg->el)
cpt ++;
if ((nombre_liste (L2) == cpt))
return 1;
else
return 0;
}
//------------------------------------------------------------------
int Moteur_Inference (liste * L ,fait * &F, regle * &R){
regle * r = R; int n1;
cout<<"\nDonner le nombre n : "; cin >> n1;
L = creation (n1);
while (r != NULL) {
if (r->testr == '*')
if ((nombre_liste (L)) == (nombre_liste (r->condition)))
if(egual(r->condition, L ) == 1) {
r->testr = '#';
for (liste * p = r->resultat; p != NULL; p = p->next)
Ajoute_Fait (F,p->el , '*');
return 0;
}
r = r->suivant;
}
return 0;
}
//###################################################################
void Afficher_Resultat (fait * M) { //affichage des résultat éxécution de moteur inference
fait * p = M;
while (p != NULL){
if (p->test == '*')
cout<<"\nResultat est : "<< p->el;
p = p->next;
}
}
//#########################################################################
//#########################################################################
//#########################################################################
void afficherMenu(void) //affichage de menu
{
cout<<" --------------------------------------- \n";
cout<<" | 1- saisir les faits . | \n";
cout<<" | 2- Saisir les regles . | \n";
cout<<" | 3- Ajouter une regle. | \n";
cout<<" | 4- Ajouter un fait. | \n";
cout<<" | 5- Affichager base de connaissance. | \n";
cout<<" | 6- Moteur d inference. | \n";
cout<<" | 7- affichage du resultats. | \n";
cout<<" | 0- Quiter. | \n";
cout<<" --------------------------------------- \n ";
cout<<" Realiser Par MISSOUM Abdelkader \n";
cout<<" en 18/01/2008 \n";
cout<<" E-mail: kader.missoum@yahoo.fr \n";
}
int main(){
regle *RRR = NULL; regle*R;
fait *FFF = NULL ; fait *F;
liste * LL; char K;
int nn;
char choix;
do {
afficherMenu();
choix = getch();
switch ( choix )
{
case '1':
cout<<"\n-----------------------------------------------------\n";
cout<<"\n\tCHARGEMENT BASE DE FAIT\n ";
FFF = Creation_Base_Fait(F);
getch();
break;
case '2':
cout<<"\n-----------------------------------------------------\n";
cout<<"\n\tCHARGEMENT BASE DE REGLE\n ";
RRR=Creation_Base_Regle(R);
getch();
break;
case '3':
cout<<"\n-----------------------------------------------------\n";
cout<<"\n\tAJOUTE UNE REGLE\n ";
Ajoute_Regle(RRR);
getch();
break;
case '4':
cout<<"\n-----------------------------------------------------\n";
cout<<"\n\tAJOUTE UN FAIT\n ";
cout<< "\nDonner une base de fait : "; cin >> K;
Ajoute_Fait(FFF,K, '#');
getch();
break;
case '5':
cout<<"\n-----------------------------------------------------\n";
cout<<"\n\tAFFICHAGE BASE DE CONNAISSANCE\n ";
cout<<"\nLa base de connaissance est : \n";
Afficher_Base_Conn ( FFF, RRR);
getch();
break;
case '6':
cout<<"\n-----------------------------------------------------\n";
cout<<"\n\tMOTEUR D'INFERENCE \n ";
Moteur_Inference (LL,FFF , RRR);
getch();
break;
case '7':
cout<<"\n-----------------------------------------------------\n";
cout<<"\n\tRESULTAT \n ";
Afficher_Resultat (FFF) ;
getch();
break;
}
}
while ( choix != '0' );
cout<<"\n ----- LE PROGRAMME TERMINE -----";
cin>>nn;
return 0;
}
Conclusion
pseudo : kadermissoum
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ /\/\/\/\/\/\/\/\/\/\/\/\/\/\/
E-mail : kader.missoum@yahoo.fr
Adresse-toi a moi pour je t'éxpliquer
************************************* ***********
MERCI ...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Moteur 2D [ par jaylin ]
Je recherche des personnes pour aider a faire un moteur 2D assez performant.
Mon Moteur 3D [ par ndj55 ]
Salut à tous!Je travaille en ce moment sur un projet de moteur 3D...Rejouissez vous,il est sous licence GNU/GPL et il est donc fournit avec ses source
mailing list [ par dragon ]
c'est pas vraiment un appel a l'aide, mais c'était la section du forum qui me paressait la plus appropriéje suis codeur pour le mod StarCraft Tatal Co
moteur 3d [ par FleXus ]
Bonjour Je suis à la recherche d'un moteur 3d capable de génererdu "3d landscape rendering" ( comme truevision3d www.truvision3dsdk.com ) mais étant c
Son de moteur réaliste [ par Aldebaran ]
Bi'jour ! Je souhaite gérer un bruit de moteur réaliste pour un jeu... comment gérer la boucle sur le son, pour faire varier le résultat selon l'accel
commande system sur c++ [ par overfun ]
Comment fait-on pour executer une commande dos sur c++ ? merci
Besoin d'aide sur Ms-dOs et en C [ par Remixgame ]
J'aimerais En ( C ) revenir à la racine du disque j'utilise ( system("cd \\"); ) mais ca ne marche pasRegardez mon progz si dessous !Aidez moi merci
Besoin d'aide sur Ms-dOs et en C [ par Remixgame ]
J'aimerais En ( C ) revenir à la racine du disque j'utilise ( system("cd \\"); ) mais ca ne marche pasRegardez mon progz si dessous !Aidez moi merci
Mon moteur graphique (2D) va à 10 FPS ? [ par ProGamer ]
Je ne comprends pas... Sur mon PC (processeur AMD Athlon XP 1500+), je l'ai testé, à 60 FPS. J'ai ensuite essayé sur mon ancien PC, qui est tout de mê
Moteur 3d OpenGL [ par Stormy ]
Salut. Je recherche des personnes motives pour travailler sur un moteur 3d sous OpenGL. Les bases sont deja etablies (Detection de collisions, sons, m
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|