الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة تصحيح برنامج

بدأه cccv في 14 مايو 2009 · 8 رد · 634 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه

كيف حالك إن شاء الله دائمــاً بخير ؟

عندي برناج يحتاج الى تصحيح

موضوع البرنامج هو دالة رئيسية تنادي على عدة دوال

الاولى تقوم بانشاء شجرة بيانات تحتوي على ادوية و هي بدورها تقوم بمانادات دالة البحت عن البيانات ادا كانت موجودة من قبل و نتادي على دالة انشاء ورقة جديدة في الشجرة

الدالة التانية تقوم بادخال بيانات جديدة و التالثة تقوم بانقاص بيانات معينة و الرابعة تقوم بحدف الادوية التي انتهىت مدة صلاحيتها و الاخيرة لاظهار معلومات الادوية التي تقل كميتها عن كمية معينة

البرنامج باللغة الفرنسية

#include<stdio.h>
 #include<alloc.h>
 #include<conio.h>
 #include <dos.h>
 typedef struct med
			   {int nuf;
				char desg;
				date d;
				float pr;
				int qt;
				med *sag, *sad;
			   }med;
 void insertion (med *racine,int nf)
 {
	  if(nf==racine->nuf)
	  printf("cet medicament existe deja \n");
	  else
	   if(nf<racine->nuf)
	 if(racine->sag==NULL)
	   { racine->sag =(med *)malloc(sizeof(med));
		racine->sag->nuf=nf;
		printf("entrez les informations du medicament\n");
		printf("designation\n");
	 scanf("%s",racine->sag->desg);
		printf("date de peremption\n");
		printf("entrez l annee \n");
		scanf("%d",&racine->sag ->d.da_year );
		printf("entrez la joure\n");
		scanf("%d",&racine->sag ->d.da_day);
		printf("entrez le moin\n");
		scanf("%d",&racine->sag->d.da_mon);
		printf("le prix de vente\n");scanf("%f",&racine->sag->pr);
		printf("la quantite en stock\n");scanf("%d",&racine->sag ->qt);
		racine->sag->sag=NULL;
		racine->sag ->sad=NULL;}
		else
	  insertion(racine->sag,nf);
	  else
	 if(racine->sad==NULL)
	 { racine->sad=(med *)malloc(sizeof(med));
		racine->sad->nuf=nf;
		printf("entrez les informations du medicament\n");
		printf("designation\n");scanf("%s",racine->sad->desg);
		printf("date de peremption\n");
		printf("entrez la annee \n");
		scanf("%d",&racine->sad ->d.da_year );
		printf("entrez la joure\n");
		scanf("%d",&racine->sad ->d.da_day);
		printf("entrez le moin\n");
		scanf("%d",&racine->sad->d.da_mon);
		printf("le prix de vente\n");
		scanf("%f",&racine->sad->pr);
		printf("la quantite en stock\n");
		scanf("%d",&racine->sad ->qt);
		racine->sad->sag=NULL;
		racine->sad->sad=NULL;}
	 else
	  insertion(racine->sad,nf);

 }
 void creation (med *racine)
 {char rep='o';
  int nf;
  printf("il y a un medicamnet a inserer entrez o/n \n");
  scanf("%c",&rep);
  if(rep=='o')
	{printf("entrez la reference du medicament\n");
	 scanf("%d",&nf);
	 racine=(med *)malloc(sizeof(med));
	 racine->nuf=nf;
	 printf("entrez les informations du medicament\n");
	 printf("designation\n");scanf("%s",racine->desg);
	 printf("date de peremption\n");
	 printf("entrez la annee \n");
	 scanf("%d",&racine->d.da_year );
	 printf("entrez la joure\n");
	 scanf("%d",&racine->d.da_day);
	 printf("entrez le moin\n");
	 scanf("%d",&racine->d.da_mon);
	 printf("le prix de vente\n");scanf("%f",&racine->pr);
	 printf("la quantite en stock\n");scanf("%d",&racine->qt);
	 racine->sag=NULL;
	 racine->sad=NULL;
	 printf("il y a un autre medicament a inserer o/n \n");
	 scanf("%c",&rep);
  while (rep == 'o')
   { printf ("entrez le numero de reference de medicament \n ");
	 scanf ("%d",&nf);
	 insertion (racine,nf);
	 printf ("il y a un autre medicament o/n? \n");
	 scanf ("%c",&rep);
   }
   }
 }

 void recherche(med *racine,med *pos,int nf)
 { med *p;
   p=racine;
   while(( p->nuf!=nf) && (p!=NULL))
	 if(nf<p->nuf)
	   p=p->sag;
	 else
	   p=p->sad;
   if(p->nuf==nf)
	 pos=p;
   else
	 pos=NULL;
 }
 void vente(med *racine)
 {if(racine==NULL)
	printf ("l'arbre est vide\n");
  else
   {printf("entrez le nombre de numero de reference de medicament qui existe dans l'ordonnance svp \n");
	int nf,q;
	float pv=0,pvt=0;
	char r;   int n;
	med *pos;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	 {printf("entrez le numero de reference de medicament a vendu \n");
	  scanf("%d",&nf);
	  recherche(racine,pos,nf);
	  if(pos==NULL)
		printf("le medicament n'existe pas \n ");
	  else
	   { printf("entrez la quantite demande \n");
	 scanf("%d",&q);
	 if(q > pos->qt)
	   { printf("quantite demande non disponible il existe sulement %d",pos->qt);
		 printf("vous vouler prendre cette quantite o/n");
		 scanf("%c",&r);
		 if(r=='o')
		   {pos->qt=0;
			pv = pos->pr*q;
			printf("le prix est %f: \n",pv);
		   }
	  }
	 else
	   { pos->qt= pos->qt - q;
		 pv =pos->pr*q;
		 printf("le prix est %f: \n",pv);
	   }
	   }
	  pvt=pvt+pv;
	 }
  printf("le prix totale de l'ordonnance est %f:\n",pvt);
  }
 }
 void achat (med *racine)
 {int nb,nf;
  int q;
  med *pos;
  printf("entrez le nombre de numero de reference de medicament qui vous voulez achete \n");
  scanf("%d",&nb);
  for(int i=1;i<=nb;i++)
  {printf("entrez le numero de reference svp \n");
   scanf("%d",&nf);
   recherche(racine,pos,nf);
   if(pos==NULL)
	insertion(racine,nf);
   else
	{printf("cet medicament exist deja entrez la nouvelle quantite svp \n");
	 scanf("%d",&q);
	 pos->qt=pos->qt+q;
	}
  }
 }
 void remplace (med *rac,*ps)
 {if(rac->sad!=NULL)
	remplace(rac->sad,ps);
  else
   {ps->nuf=rac->nuf;
	ps->desg=rac->desg;
	ps->d=rac-> d;
	ps->pr=rac->pr;
	ps->qt=rac->qt;
	ps=rac;
	rac=rac->sag;
   }
 }
 void supprime(med *racine)
 {med *ps;
 if(racine!=NULL)
  {ps=racine;
   if((racine->sad==NULL)&&(racine->sag==NULL))
	  racine=NULL;
   else
	  if((racine->sad==NULL)&&(racine->sag!=NULL))
	 racine=racine->sag;
	  else
	 if((racine->sad!=NULL)&&(racine->sag==NULL))
		racine=racine->sad;
	 else
		remplace(ps->sag,ps);
 free(ps);
  }
 }
 void preordre-p(med *racine,date *dh)
 {if(racine!=NULL)
	if(dh.da_year==racine->d.da_year)
	  if(dh.da_mon==racine->d.da_mon)
		if(dh.da_day==racine->d.da_day)
	  supprime(racine);
		else
	  if(dh.da_day>racine->d.da_day)
		supprime(racine);
	  else
		printf("medicament en cours valide\n");
	  else
		if(dh.da_mon>racine->d.da_mon)
	   supprime(racine);
		else
	   printf("medicament en cours valide\n");
	else
	   if(dh.da_year>racine->d.da_year)
	  supprime(racine);
	   else
	  printf("medicament en cours valide\n");
  else
	printf("l'arbre est vide\n");
 preordre_p(racine->sag);
 preordre_p(racine->sad);
 }
 void peremption(med *racine)
 {date dh;
  getdate(&dh);
  preordre_p(racine,&dh);
 }
 float preordre(med *racine)
 {float tm=0;float pv=0;
  if(racine!=NULL)
	{pv=racine->pr*qt;
	 tm=tm+pv;
	 return(tm);
	}
  else
	printf("l'arbre est vide\n");
 preordre(racine->sag);
 preordre(racine->sad);
 }
 void total-monitaire(med *racine)
 {float f;
  f=preordre(racine);
  printf("le prix totale est %f:",f);
  }
  void preordre-s(med*racine,int s)
  { if(racine != NULL)
	  { printf("les medicament qui sont moin qeu quantite minimale\n");
		if(racine->qt<s)
	  printf("%d\n",racine->nuf);
	  }
	else
	 printf("l'arbre est vide");
  preordre-s(racine->sag);
  preordre-s(racine->sad);

  }

  void reapprovisonnement(med *racine,int s)
  { printf("entrez la quantite minimale svp\n");
	scanf("%d",&s);
	preordre_s (racine,s)
  }
 void main ()
 { clrscr();
   char rep;
   med *racine;
   int ch;
   printf("*****************WELCOME*******************\n");
   printf("vous voulez fair une operayion o/n \n");
   scanf("%c",&rep);
   printf("entrez 1 pour fair la creation \n");
   printf("entrez 2 pour fair la vente \n");
   printf("entrez 3 pour fair l'achat \n");
   printf("entrez 4 pour fair la peremption \n");
   printf("entrez 5 pour fair la reapprovisionnement \n");
   printf("entrez 6 pour fair total monetaire \n");
   scanf("%d",&ch);
   while(rep=='o')
   {
   switch (ch)
	{ case 1:creation(racine);
	  getch();break;
	  case 2:vente(racine);
	  getch();break;
	  case 3:achat(racine);
	  getch();break;
	  case 4:peremption(racine);
	  getch();break;
	}
   printf("vous voulez fair une autre operayion o/n \n");
   scanf("%c",&rep);
   }
 }

،،

ادا فيه مشاكل اقدر اترجمه انجليزي ادا تبو

البرنامج بالمرفقات

و السلام عليكــم ورحمـة الله وبركاتــه ،،

SOUSOU.rar

#2

السلام عليكم

عالجت الأخطاء التى كانت موجوده

ولكنى لا اعرف استخدم البرنامج

لأنى لا أفهم الفرنسيه

#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include <dos.h>
 struct date 
{
	int da_day,da_mon,da_year;
};
 struct med
			   {int nuf;
				char desg;
				date d;
				float pr;
				int qt;
				med *sag, *sad;
			   };
void insertion (med *racine,int nf)
{
	  if(nf==racine->nuf)
	  printf("cet medicament existe deja \n");
	  else
	   if(nf<racine->nuf)
	 if(racine->sag==NULL)
	   { racine->sag =(med *)malloc(sizeof(med));
		racine->sag->nuf=nf;
		printf("entrez les informations du medicament\n");
		printf("designation\n");
	 scanf("%s",racine->sag->desg);
		printf("date de peremption\n");
		printf("entrez l annee \n");
		scanf("%d",&racine->sag ->d.da_year );
		printf("entrez la joure\n");
		scanf("%d",&racine->sag ->d.da_day);
		printf("entrez le moin\n");
		scanf("%d",&racine->sag->d.da_mon);
		printf("le prix de vente\n");scanf("%f",&racine->sag->pr);
		printf("la quantite en stock\n");scanf("%d",&racine->sag ->qt);
		racine->sag->sag=NULL;
		racine->sag ->sad=NULL;}
		else
	  insertion(racine->sag,nf);
	  else
	 if(racine->sad==NULL)
	 { racine->sad=(med *)malloc(sizeof(med));
		racine->sad->nuf=nf;
		printf("entrez les informations du medicament\n");
		printf("designation\n");scanf("%s",racine->sad->desg);
		printf("date de peremption\n");
		printf("entrez la annee \n");
		scanf("%d",&racine->sad ->d.da_year );
		printf("entrez la joure\n");
		scanf("%d",&racine->sad ->d.da_day);
		printf("entrez le moin\n");
		scanf("%d",&racine->sad->d.da_mon);
		printf("le prix de vente\n");
		scanf("%f",&racine->sad->pr);
		printf("la quantite en stock\n");
		scanf("%d",&racine->sad ->qt);
		racine->sad->sag=NULL;
		racine->sad->sad=NULL;}
	 else
	  insertion(racine->sad,nf);

}
void creation (med *racine)
{char rep='o';
  int nf;
  printf("il y a un medicamnet a inserer entrez o/n \n");
  scanf("%c",&rep);
  if(rep=='o')
	{printf("entrez la reference du medicament\n");
	 scanf("%d",&nf);
	 racine=(med *)malloc(sizeof(med));
	 racine->nuf=nf;
	 printf("entrez les informations du medicament\n");
	 printf("designation\n");scanf("%s",racine->desg);
	 printf("date de peremption\n");
	 printf("entrez la annee \n");
	 scanf("%d",&racine->d.da_year );
	 printf("entrez la joure\n");
	 scanf("%d",&racine->d.da_day);
	 printf("entrez le moin\n");
	 scanf("%d",&racine->d.da_mon);
	 printf("le prix de vente\n");scanf("%f",&racine->pr);
	 printf("la quantite en stock\n");scanf("%d",&racine->qt);
	 racine->sag=NULL;
	 racine->sad=NULL;
	 printf("il y a un autre medicament a inserer o/n \n");
	 scanf("%c",&rep);
  while (rep == 'o')
   { printf ("entrez le numero de reference de medicament \n ");
	 scanf ("%d",&nf);
	 insertion (racine,nf);
	 printf ("il y a un autre medicament o/n? \n");
	 scanf ("%c",&rep);
   }
   }
}

void recherche(med *racine,med *pos,int nf)
{ med *p;
   p=racine;
   while(( p->nuf!=nf) && (p!=NULL))
	 if(nf<p->nuf)
	   p=p->sag;
	 else
	   p=p->sad;
   if(p->nuf==nf)
	 pos=p;
   else
	 pos=NULL;
}
void vente(med *racine)
{if(racine==NULL)
	printf ("l'arbre est vide\n");
  else
   {printf("entrez le nombre de numero de reference de medicament qui existe dans l'ordonnance svp \n");
	int nf,q;
	float pv=0,pvt=0;
	char r;   int n;
	med *pos;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	 {printf("entrez le numero de reference de medicament a vendu \n");
	  scanf("%d",&nf);
	  recherche(racine,pos,nf);
	  if(pos==NULL)
		printf("le medicament n'existe pas \n ");
	  else
	   { printf("entrez la quantite demande \n");
	 scanf("%d",&q);
	 if(q > pos->qt)
	   { printf("quantite demande non disponible il existe sulement %d",pos->qt);
		 printf("vous vouler prendre cette quantite o/n");
		 scanf("%c",&r);
		 if(r=='o')
		   {pos->qt=0;
			pv = pos->pr*q;
			printf("le prix est %f: \n",pv);
		   }
	  }
	 else
	   { pos->qt= pos->qt - q;
		 pv =pos->pr*q;
		 printf("le prix est %f: \n",pv);
	   }
	   }
	  pvt=pvt+pv;
	 }
  printf("le prix totale de l'ordonnance est %f:\n",pvt);
  }
}
void achat (med *racine)
{int nb,nf;
  int q;
  med *pos;
  printf("entrez le nombre de numero de reference de medicament qui vous voulez achete \n");
  scanf("%d",&nb);
  for(int i=1;i<=nb;i++)
  {printf("entrez le numero de reference svp \n");
   scanf("%d",&nf);
   recherche(racine,pos,nf);
   if(pos==NULL)
	insertion(racine,nf);
   else
	{printf("cet medicament exist deja entrez la nouvelle quantite svp \n");
	 scanf("%d",&q);
	 pos->qt=pos->qt+q;
	}
  }
}
void remplace (med *rac,med *ps)
{if(rac->sad!=NULL)
	remplace(rac->sad,ps);
  else
   {ps->nuf=rac->nuf;
	ps->desg=rac->desg;
	ps->d=rac-> d;
	ps->pr=rac->pr;
	ps->qt=rac->qt;
	ps=rac;
	rac=rac->sag;
   }
}
void supprime(med *racine)
{med *ps;
if(racine!=NULL)
  {ps=racine;
   if((racine->sad==NULL)&&(racine->sag==NULL))
	  racine=NULL;
   else
	  if((racine->sad==NULL)&&(racine->sag!=NULL))
	 racine=racine->sag;
	  else
	 if((racine->sad!=NULL)&&(racine->sag==NULL))
		racine=racine->sad;
	 else
		remplace(ps->sag,ps);
free(ps);
  }
}
void preordre_p(med *racine,date *dh)
{
	if(racine!=NULL)
	if(dh->da_year==racine->d.da_year)
	  if(dh->da_mon==racine->d.da_mon)
		if(dh->da_day==racine->d.da_day)
	  supprime(racine);
		else
	  if(dh->da_day>racine->d.da_day)
		supprime(racine);
	  else
		printf("medicament en cours valide\n");
	  else
		if(dh->da_mon>racine->d.da_mon)
	   supprime(racine);
		else
	   printf("medicament en cours valide\n");
	else
	   if(dh->da_year>racine->d.da_year)
	  supprime(racine);
	   else
	  printf("medicament en cours valide\n");
  else
	printf("l'arbre est vide\n");
preordre_p(racine->sag,dh);
preordre_p(racine->sad,dh);
}
void getdate(date& dh)
{
	scanf("%d %d %d",dh.da_day,dh.da_mon,dh.da_year);
}
void peremption(med *racine)
{date dh;
  getdate(dh);
  preordre_p(racine,&dh);
}
float preordre(med *racine)
{float tm=0;float pv=0;
  if(racine!=NULL)
	{pv=racine->pr*racine->qt;
	 tm=tm+pv;
	 return(tm);
	}
  else
	printf("l'arbre est vide\n");
preordre(racine->sag);
preordre(racine->sad);
}
void total_monitaire(med *racine)
{float f;
  f=preordre(racine);
  printf("le prix totale est %f:",f);
  }
  void preordre_s(med*racine,int s)
  { if(racine != NULL)
	  { printf("les medicament qui sont moin qeu quantite minimale\n");
		if(racine->qt<s)
	  printf("%d\n",racine->nuf);
	  }
	else
	 printf("l'arbre est vide");
  preordre_s(racine->sag,s);
  preordre_s(racine->sad,s);

  }

  void reapprovisonnement(med *racine,int s)
  { printf("entrez la quantite minimale svp\n");
	scanf("%d",&s);
	preordre_s (racine,s);
  }
void main ()
{ 
   char rep;
   med *racine;
   int ch;
   printf("*****************WELCOME*******************\n");
   printf("vous voulez fair une operayion o/n \n");
   scanf("%c",&rep);
   printf("entrez 1 pour fair la creation \n");
   printf("entrez 2 pour fair la vente \n");
   printf("entrez 3 pour fair l'achat \n");
   printf("entrez 4 pour fair la peremption \n");
   printf("entrez 5 pour fair la reapprovisionnement \n");
   printf("entrez 6 pour fair total monetaire \n");
   scanf("%d",&ch);
   while(rep=='o')
   {
   switch (ch)
	{ case 1:creation(racine);
	  getch();break;
	  case 2:vente(racine);
	  getch();break;
	  case 3:achat(racine);
	  getch();break;
	  case 4:peremption(racine);
	  getch();break;
	}
   printf("vous voulez fair une autre operayion o/n \n");
   scanf("%c",&rep);
   }
}

سلام

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#3

بســم الله الـرحمــن الرحيــم

شكراً لك اخي الكريم على المساعدة رح ادعولك انا و الزملاء بالجامعة

قمت بتعديل بعض الاخطاء المتبقية بالبرنامج يبقى خطا وحيد و هو عن الموشر الدي قمت بتعريفه و استخدامه بشكل عادي و لكن احصل على الخطا التالي

pos is never used

#include<stdio.h>
#include<malloc.h>
#include<conio.h>

struct date
{
	int da_day,da_mon,da_year;
};
struct med
		   {int nuf;
		char desg;
		date d;
		float pr;
		int qt;
		med *sag, *sad,*pos;
		   };
void insertion (med *racine,int nf)
{
	  if(nf==racine->nuf)
	  printf("cet medicament existe deja \n");
	  else
	   if(nf<racine->nuf)
	 if(racine->sag==NULL)
	   { racine->sag =(med *)malloc(sizeof(med));
	racine->sag->nuf=nf;
	printf("entrez les informations du medicament\n");
	printf("designation\n");
	 scanf("%s",racine->sag->desg);
	printf("date de peremption\n");
	printf("entrez l annee \n");
	scanf("%d",&racine->sag ->d.da_year );
	printf("entrez la joure\n");
	scanf("%d",&racine->sag ->d.da_day);
	printf("entrez le moin\n");
	scanf("%d",&racine->sag->d.da_mon);
	printf("le prix de vente\n");scanf("%f",&racine->sag->pr);
	printf("la quantite en stock\n");scanf("%d",&racine->sag ->qt);
	racine->sag->sag=NULL;
	racine->sag ->sad=NULL;}
	else
	  insertion(racine->sag,nf);
	  else
	 if(racine->sad==NULL)
	 { racine->sad=(med *)malloc(sizeof(med));
	racine->sad->nuf=nf;
	printf("entrez les informations du medicament\n");
	printf("designation\n");scanf("%s",racine->sad->desg);
	printf("date de peremption\n");
	printf("entrez la annee \n");
	scanf("%d",&racine->sad ->d.da_year );
	printf("entrez la joure\n");
	scanf("%d",&racine->sad ->d.da_day);
	printf("entrez le moin\n");
	scanf("%d",&racine->sad->d.da_mon);
	printf("le prix de vente\n");
	scanf("%f",&racine->sad->pr);
	printf("la quantite en stock\n");
	scanf("%d",&racine->sad ->qt);
	racine->sad->sag=NULL;
	racine->sad->sad=NULL;}
	 else
	  insertion(racine->sad,nf);

}
void creation (med *racine)
{char rep='o';
  int nf;
  printf("il y a un medicamnet a inserer entrez o/n \n");
  scanf("%c",&rep);
  if(rep=='o')
	{printf("entrez la reference du medicament\n");
	 scanf("%d",&nf);
	 racine=(med *)malloc(sizeof(med));
	 racine->nuf=nf;
	 printf("entrez les informations du medicament\n");
	 printf("designation\n");scanf("%s",racine->desg);
	 printf("date de peremption\n");
	 printf("entrez la annee \n");
	 scanf("%d",&racine->d.da_year );
	 printf("entrez la joure\n");
	 scanf("%d",&racine->d.da_day);
	 printf("entrez le moin\n");
	 scanf("%d",&racine->d.da_mon);
	 printf("le prix de vente\n");scanf("%f",&racine->pr);
	 printf("la quantite en stock\n");scanf("%d",&racine->qt);
	 racine->sag=NULL;
	 racine->sad=NULL;
	 printf("il y a un autre medicament a inserer o/n \n");
	 scanf("%c",&rep);
  while (rep == 'o')
   { printf ("entrez le numero de reference de medicament \n ");
	 scanf ("%d",&nf);
	 insertion (racine,nf);
	 printf ("il y a un autre medicament o/n? \n");
	 scanf ("%c",&rep);
   }
   }
}

void recherche(med *racine,int nf)
{ med *p, *pos=NULL;
   p=racine;
   while(( p->nuf!=nf) && (p!=NULL))
	 if(nf<p->nuf)
	   p=p->sag;
	 else
	   p=p->sad;
   if(p->nuf==nf)
	 pos=p;
   else
	 pos=NULL;
}
void vente(med *racine)
{if(racine==NULL)
	printf ("l'arbre est vide\n");
  else
   {printf("entrez le nombre de numero de reference de medicament qui existe dans l'ordonnance svp \n");
	int nf,q;
	float pv=0,pvt=0;
	char r;   int n;
	med *pos;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	 {printf("entrez le numero de reference de medicament a vendu \n");
	  scanf("%d",&nf);
	  recherche(racine,nf);
	  if(pos==NULL)
		printf("le medicament n'existe pas \n ");
	  else
	   { printf("entrez la quantite demande \n");
	 scanf("%d",&q);
	 if(q > pos->qt)
	   { printf("quantite demande non disponible il existe sulement %d",pos->qt);
		 printf("vous vouler prendre cette quantite o/n");
		 scanf("%c",&r);
		 if(r=='o')
		   {pos->qt=0;
			pv = pos->pr*q;
			printf("le prix est %f: \n",pv);
		   }
	  }
	 else
	   { pos->qt= pos->qt - q;
		 pv =pos->pr*q;
		 printf("le prix est %f: \n",pv);
	   }
	   }
	  pvt=pvt+pv;
	 }
  printf("le prix totale de l'ordonnance est %f:\n",pvt);
  }
}
void achat (med *racine)
{int nb,nf;
  int q;
  med *pos;
  printf("entrez le nombre de numero de reference de medicament qui vous voulez achete \n");
  scanf("%d",&nb);
  for(int i=1;i<=nb;i++)
  {printf("entrez le numero de reference svp \n");
   scanf("%d",&nf);
   recherche(racine,nf);
   if(pos==NULL)
	insertion(racine,nf);
   else
	{printf("cet medicament exist deja entrez la nouvelle quantite svp \n");
	 scanf("%d",&q);
	 pos->qt=pos->qt+q;
	}
  }
}
void remplace (med *rac,med *ps)
{if(rac->sad!=NULL)
	remplace(rac->sad,ps);
  else
   {ps->nuf=rac->nuf;
	ps->desg=rac->desg;
	ps->d=rac-> d;
	ps->pr=rac->pr;
	ps->qt=rac->qt;
	ps=rac;
	rac=rac->sag;
   }
}
void supprime(med *racine)
{med *ps;
if(racine!=NULL)
  {ps=racine;
   if((racine->sad==NULL)&&(racine->sag==NULL))
	  racine=NULL;
   else
	  if((racine->sad==NULL)&&(racine->sag!=NULL))
	 racine=racine->sag;
	  else
	 if((racine->sad!=NULL)&&(racine->sag==NULL))
		racine=racine->sad;
	 else
		remplace(ps->sag,ps);
free(ps);
  }
}
void preordre_p(med *racine,date *dh)
{
	if(racine!=NULL)
	if(dh->da_year==racine->d.da_year)
	  if(dh->da_mon==racine->d.da_mon)
		if(dh->da_day==racine->d.da_day)
	  supprime(racine);
		else
	  if(dh->da_day>racine->d.da_day)
		supprime(racine);
	  else
		printf("medicament en cours valide\n");
	  else
		if(dh->da_mon>racine->d.da_mon)
	   supprime(racine);
		else
	   printf("medicament en cours valide\n");
	else
	   if(dh->da_year>racine->d.da_year)
	  supprime(racine);
	   else
	  printf("medicament en cours valide\n");
  else
	printf("l'arbre est vide\n");
preordre_p(racine->sag,dh);
preordre_p(racine->sad,dh);
}
void getdate(date& dh)
{
	scanf("%d %d %d",dh.da_day,dh.da_mon,dh.da_year);
}
void peremption(med *racine)
{date dh;
  getdate(dh);
  preordre_p(racine,&dh);
}
float preordre(med *racine)
{float tm=0;float pv=0;
  if(racine!=NULL)
	{pv=racine->pr*racine->qt;
	 tm=tm+pv;

	}
  else
	printf("l'arbre est vide\n");
preordre(racine->sag);
preordre(racine->sad);
return(tm);
}
void total_monitaire(med *racine)
{float f;
  f=preordre(racine);
  printf("le prix totale est %f:",f);
  }
  void preordre_s(med*racine,int s)
  { if(racine != NULL)
	  { printf("les medicament qui sont moin qeu quantite minimale\n");
		if(racine->qt<s)
	  printf("%d\n",racine->nuf);
	  }
	else
	 printf("l'arbre est vide");
  preordre_s(racine->sag,s);
  preordre_s(racine->sad,s);

  }

  void reapprovisonnement(med *racine,int s)
  { printf("entrez la quantite minimale svp\n");
	scanf("%d",&s);
	preordre_s (racine,s);
  }
void main ()
{
   char rep;
   med *racine;
   int ch;
   printf("*****************WELCOME*******************\n");
   printf("vous voulez fair une operayion o/n \n");
   scanf("%c",&rep);
   printf("entrez 1 pour fair la creation \n");
   printf("entrez 2 pour fair la vente \n");
   printf("entrez 3 pour fair l'achat \n");
   printf("entrez 4 pour fair la peremption \n");
   printf("entrez 5 pour fair la reapprovisionnement \n");
   printf("entrez 6 pour fair total monetaire \n");
   scanf("%d",&ch);
   while(rep=='o')
   {
   switch (ch)
	{ case 1:creation(racine);
	  getch();break;
	  case 2:vente(racine);
	  getch();break;
	  case 3:achat(racine);
	  getch();break;
	  case 4:peremption(racine);
	  getch();break;
	}
   printf("vous voulez fair une autre operayion o/n \n");
   scanf("%c",&rep);
   }
   }

اتمنى من اي احد لديه فكرة تصحيح الخطا و تنويرنا بسببه

و السلام عليكــم ورحمـة الله وبركاتــه ،،

CH.rar

#4

السلام عليكم

أى بوينتر يسبب لك مشكله

استخدم معامل new بعد الإعلان عنه

med *pos;
  pos=new med;

وسامحنى أخى أنا لا أفهم الفرنسيه

يعنى لا اعرف منطق البرنامج

فى أمان الله

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#5

بســم الله الـرحمــن الرحيــم السلام عليكــم ورحمـة الله وبركاتــه

اخي لا اجد طريقة لشكرك بها سوى الدعاء الصالح

قمت بتعديلات عالبرنامج و قسمته الى دوال ليسهل تصحيحها

الدالة الاولى هي الماين تنادي على دالة ادخال البيانات التي تقول بطلب المعلومات من المستخدم و داخالها بنفسها الى جدر الشجرة ثم تسال ادا كان هناك عنصر اخر ادا كانت الاجابة نعم تقوم بمناداة الدالة

insertion

و اريد ان تكون هده الدالة الاخيرة داخل

loop while

لتسال المستخدم كل مرة ادا كان هناك عنصر اخر لادخال .

مشكل الدالة انها تعمل عادي فقط عند قراءة اجابة المستخدم عن سؤال وجود عنصر اخر او لا يخرج البرنامج تلقائي

هادا الكود

#include<stdio.h>
 #include<malloc.h>
 #include<conio.h>
 #include<stdlib.h>	 
 #include<dos.h>

 struct med
			{int nuf;
		 char desg;
		 date d;
		 float pr;
		 int qt;
		 med *sag, *sad,*pos;
			};

 void insertion (med *racine,int nf)

 {
	   if(nf==racine->nuf)
	   printf("cet medicament existe deja \n");
	   else
		if(nf<racine->nuf)
	  if(racine->sag==NULL)
		{ racine->sag =(med *)malloc(sizeof(med));
	 racine->sag->nuf=nf;
	 printf("entrez les informations du medicament\n");
	 printf("designation\n");
	  scanf("%s",racine->sag->desg);
	 printf("date de peremption\n");
	 printf("entrez l annee \n");
	 scanf("%d",&racine->sag ->d.da_year );
	 printf("entrez la joure\n");
	 scanf("%d",&racine->sag ->d.da_day);
	 printf("entrez le moin\n");
	 scanf("%d",&racine->sag->d.da_mon);
	 printf("le prix de vente\n");scanf("%f",&racine->sag->pr);
	 printf("la quantite en stock\n");scanf("%d",&racine->sag ->qt);
	 racine->sag->sag=NULL;
	 racine->sag ->sad=NULL;}
	 else
	   insertion(racine->sag,nf);
	   else
	  if(racine->sad==NULL)
	  { racine->sad=(med *)malloc(sizeof(med));
	 racine->sad->nuf=nf;
	 printf("entrez les informations du medicament\n");
	 printf("designation\n");scanf("%s",racine->sad->desg);
	 printf("date de peremption\n");
	 printf("entrez la annee \n");
	 scanf("%d",&racine->sad ->d.da_year );
	 printf("entrez la joure\n");
	 scanf("%d",&racine->sad ->d.da_day);
	 printf("entrez le moin\n");
	 scanf("%d",&racine->sad->d.da_mon);
	 printf("le prix de vente\n");
	 scanf("%f",&racine->sad->pr);
	 printf("la quantite en stock\n");
	 scanf("%d",&racine->sad ->qt);
	 racine->sad->sag=NULL;
	 racine->sad->sad=NULL;}
	  else
	   insertion(racine->sad,nf);

 }
 void creation (med *racine)
 {char rep='o';
   int nf;





	 printf("entrez la reference du medicament\n");
	  scanf("%d",&nf);
	  racine=(med *)malloc(sizeof(med));
	  racine->nuf=nf;
	  printf("entrez les informations du medicament\n");
	  printf("designation\n");scanf("%s",racine->desg);
	  printf("date de peremption\n");
	  printf("entrez la annee \n");
	  scanf("%d",&racine->d.da_year );
	  printf("entrez la joure\n");
	  scanf("%d",&racine->d.da_day);
	  printf("entrez le moin\n");
	  scanf("%d",&racine->d.da_mon);




	  printf("la quantite en stock\n");
	  scanf("%d",&racine->qt);
	  racine->sag=NULL;

	 racine->sad=NULL;


	  printf("il y a un autre medicament a inserer o/n \n");
	 scanf("%c",&rep);
   while (rep == 'o')
	{ printf ("entrez le numero de reference de medicament \n ");
	  scanf ("%d",&nf);
	  insertion (racine,nf);
	  printf ("il y a un autre medicament o/n? \n");
	  scanf ("%c",&rep);
	}
	}




 void main ()
 {
	char rep;
	med *racine;
	int ch;
	printf("*****************WELCOME*******************\n");


	printf("entrez 1 pour fair la creation \n");
	printf("entrez 2 sortir \n");
	scanf("%d",&ch);


	switch (ch)
	 { case 1: creation(racine);
	   getch();break;
	   case 2: exit(2);
	   getch();break;

	}
	}

MED.rar

#6

أخى الكريم

جرب الكود الآتى ( قد يحتاج بعض التعديلات والإضافات)

#include<stdio.h>
 #include<malloc.h>
 #include<conio.h>
 #include<stdlib.h>	
 #include<dos.h>
 struct date
 {
	 int da_day,da_mon,da_year;
 };
 struct med
			 {int nuf;
		  char desg;
		  date d;
		  float pr;
		  int qt;
		  med *sag, *sad;
			 };
 med* create_new();
 void insertion (med *&racine,int nf)
 {
 if ( racine == NULL )
 {
 racine =create_new();
 return;
 }
 else if ( nf < racine->nuf )
 {
 insertion(racine->sad,nf);
 }
 else
 {
 insertion(racine->sag,nf);
 }
 }
 med* create_new ()
 {
	 med* racine;
	 racine=(med *)malloc(sizeof(med));
	int nf;
	  printf("entrez la reference du medicament\n");
	   scanf("%d",&nf);
	   racine->nuf=nf;
	   printf("entrez les informations du medicament\n");
	   printf("designation\n");
	   scanf("%s",&racine->desg);
	   printf("date de peremption\n");
	   printf("entrez la annee \n");
	   scanf("%d",&racine->d.da_year );
	   printf("entrez la joure\n");
	   scanf("%d",&racine->d.da_day);
	   printf("entrez le moin\n");
	   scanf("%d",&racine->d.da_mon);
	   printf("la quantite en stock\n");
	   scanf("%d",&racine->qt);
	   racine->sag=NULL;
	  racine->sad=NULL;
	 return racine;
 }
 void main ()
 {
	 char rep;
	 med *racine=NULL;
	 int nf;
	 int ch;
	 printf("*****************WELCOME*******************\n");
	 printf("entrez 1 pour fair la creation \n");
	 printf("entrez 2 sortir \n");
	 scanf("%d",&ch);
	 switch (ch)
	  {
	 case 1:
		 while (1)
		 {
		  printf("Enetr nf :");
		 scanf("%d",&nf);
		 insertion(racine,nf);
		 printf("continue ?? y or n\n"); scanf("%s",&rep);
		 if(rep=='n') break;
		 }


		getch();
		break;
		case 2: exit(2);
		getch();break;
	 }
	 }

سلام

تم تعديل هذه المشاركة بواسطة amin_mu123 في 14 مايو 2009 في 23:35

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#7

اخي استفدت من مشاركتك و عدلت على الكود قليلا و هدا احسن ما وصلت اليه

#include<stdio.h>
 #include<malloc.h>
 #include<conio.h>
 #include<stdlib.h>	 
 #include<dos.h>

 struct med
			{int nuf;
		 char desg;
		 date d;
		 float pr;
		 int qt;
		 med *sag, *sad,*pos;
			};

 void insertion (med *racine,int nf)

 {
	   if(nf==racine->nuf)
	   printf("cet medicament existe deja \n");
	   else
		if(nf<racine->nuf)
	  if(racine->sag==NULL)
		{ racine->sag =(med *)malloc(sizeof(med));
	 racine->sag->nuf=nf;
	 printf("entrez les informations du medicament\n");
	 printf("designation\n");
	  scanf("%s",racine->sag->desg);
	 printf("date de peremption\n");
	 printf("entrez l annee \n");
	 scanf("%d",&racine->sag ->d.da_year );
	 printf("entrez la joure\n");
	 scanf("%d",&racine->sag ->d.da_day);
	 printf("entrez le moin\n");
	 scanf("%d",&racine->sag->d.da_mon);
	 printf("le prix de vente\n");scanf("%f",&racine->sag->pr);
	 printf("la quantite en stock\n");scanf("%d",&racine->sag ->qt);
	 racine->sag->sag=NULL;
	 racine->sag ->sad=NULL;}
	 else
	   insertion(racine->sag,nf);
	   else
	  if(racine->sad==NULL)
	  { racine->sad=(med *)malloc(sizeof(med));
	 racine->sad->nuf=nf;
	 printf("entrez les informations du medicament\n");
	 printf("designation\n");scanf("%s",racine->sad->desg);
	 printf("date de peremption\n");
	 printf("entrez la annee \n");
	 scanf("%d",&racine->sad ->d.da_year );
	 printf("entrez la joure\n");
	 scanf("%d",&racine->sad ->d.da_day);
	 printf("entrez le moin\n");
	 scanf("%d",&racine->sad->d.da_mon);
	 printf("le prix de vente\n");
	 scanf("%f",&racine->sad->pr);
	 printf("la quantite en stock\n");
	 scanf("%d",&racine->sad ->qt);
	 racine->sad->sag=NULL;
	 racine->sad->sad=NULL;}
	  else
	   insertion(racine->sad,nf);

 }
 void creation (med *racine)
 {char rep='o';
   int nf;





	 printf("entrez la reference du medicament\n");
	  scanf("%d",&nf);
	  racine=(med *)malloc(sizeof(med));
	  racine->nuf=nf;
	  printf("entrez les informations du medicament\n");
	  printf("designation\n");scanf("%s",racine->desg);
	  printf("date de peremption\n");
	  printf("entrez la annee \n");
	  scanf("%d",&racine->d.da_year );
	  printf("entrez la joure\n");
	  scanf("%d",&racine->d.da_day);
	  printf("entrez le moin\n");
	  scanf("%d",&racine->d.da_mon);




	  printf("la quantite en stock\n");
	  scanf("%d",&racine->qt);
	  racine->sag=NULL;

	 racine->sad=NULL;


	  printf("il y a un autre medicament a inserer o/n \n");
	 scanf("%c",rep);
   while (rep == 'o')
	{ printf ("entrez le numero de reference de medicament \n ");
	  scanf ("%d",&nf);
	  insertion (racine,nf);
	  printf ("il y a un autre medicament o/n? \n");
	  scanf ("%c",rep);
	}
	}




 void main ()
 {
	char rep;
	med *racine;
	int ch;
	printf("*****************WELCOME*******************\n");


	printf("entrez 1 pour fair la creation \n");
	printf("entrez 2 sortir \n");
	scanf("%d",&ch);


	switch (ch)
	 { case 1: creation(racine);
	   getch();break;
	   case 2: exit(2);
	   getch();break;

	}
	}

اظنك لاحظت حدفي لتعريف متغير الزمن لان المكتبة dos.h تغنينا عن هادا

و يبقى مشكل ان البرنامج لا يكرر عند اختيار اليوزر اجابة o او y

تركت الدالتين insertion و creation لان بها test ادا كان الرقم موجود من قبل ام لا ادا كان موجود يندر بدلك و ادا كان لا ينادي Insertion

تم تعديل هذه المشاركة بواسطة cccv في 15 مايو 2009 في 01:39

#8

بسطت على الدالة الى اكتر حد و حددت مجال الخطا في هادا الكود

#include<stdio.h>
int nf;
char rep='o';
void main()
{

while (rep =='o')
	{ printf ("entrez le numero de reference de medicament \n ");
	  scanf ("%d",&nf);
	  printf ("insersion \n");

	  printf ("il y a un autre medicament o/n? \n");
	  scanf("%c",rep);
}	}
#9
#include<stdio.h>
int nf;
char rep='o';
main()
{

while (rep =='o')
	{ 
	  printf ("entrez le numero de reference de medicament \n ");
	  scanf ("%d",&nf);
	  printf ("insersion \n");
	  printf ("il y a un autre medicament o/n? \n");
	  scanf("%c",rep);
	}   
  return 0;
 }

أظن أن السبب كان في جعل الدالة main لاترجع قيمة حيث أن المترجمات الحديثة تفرض على الدالة Main إرجاع قيمة حتى يعرف النظام حالة إنتهاء البرنامج ،0 تعني إنتهائه بنجاح .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

مواضيع مشابهة