begin process at 2012 02 12 08:21:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > SYSTEM EXPERT

SYSTEM EXPERT


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :system, expert, systemeexpert, moteur, inference Niveau :Débutant Date de création :04/02/2008 Date de mise à jour :04/02/2008 15:40:10 Vu :8 893

Auteur : kadermissoum

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 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

CONVERSION D'UNE IMAGE
CALCUL POLYNOMIAL

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture LISTE PROCESSUS V2 (WIN64) par BruNews
Source avec Zip MARSCONQUEROR : SIMULATION DE LA TRAJECTOIRE D'UNE SONDE DAN... par CodeStaler
Source avec Zip Source avec une capture XTENGINE - MOTEUR 3D BASÉ SUR OPENGL, GLEW ET LA SDL par XT95
Source avec Zip Source avec une capture MOTEUR AUDIO TEMPS REEL AVEC GESTION DU VOLUME par gabuzomeuh
Source avec Zip DRIVERS POUR AFFICHEUR LCD (2X16) ET CLAVIER MATRICIEL 12 TO... par CodeStaler

Commentaires et avis

Commentaire de khazzab le 06/04/2008 19:59:38 6/10

salut
votr code est réussi 100% mais il est  un peut compliqui pour mois , es que vous avez la version en pascal ou en java
es ce que vous pouvez me aidé parce que je suis debutante enprogrammation.
merci

Commentaire de rihana le 13/03/2010 20:43:36

mais dans la partie de moteur d'inference c quoi le nombre n
c'est le nombre de quoi

Commentaire de David292929 le 24/04/2011 00:22:11 10/10

merçi beaucoup mon ami

 Ajouter un commentaire


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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,744 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales