Sunteți pe pagina 1din 7

#include <iostream>

#include <cstdlib>
#include <cstring>

using namespace std;

struct data
{
int zi;
int luna;
int an;
};

struct nod
{
char nume[30];
char tara_origine[30];
int nr_cutii;
data data_exp;
int pret;
nod *urm;
}*prim;

void creare (nod *&prim)


{
int n,i;
cout<<"Introduceti numarul initial de medicamente aflate pe stoc :";
cin>>n;
prim=new nod;
prim->urm=NULL;
nod *q,*ultim;
ultim=prim;
for (i=1;i<=n;i++)
{
q=new nod;
cout<<"Introduceti numele medicamentului:";
cin.get();
cin.get(q->nume,30);
cout<<"Introduceti tara de origine a medicamentului:";
cin.get();
cin.get(q->tara_origine,30);
cout<<"Introduceti numarul de cutii din medicamentul actual:";
cin>>q->nr_cutii;
cout<<"Introduceti data expirarii:"<<'\n';
cout<<"zi:";
cin>>q->data_exp.zi;
cout<<"luna:";
cin>>q->data_exp.luna;
cout<<"anul:";
cin>>q->data_exp.an;
cout<<"Introduceti pretul medicamentului:";
cin>>q->pret;
ultim->urm=q;
ultim=q;
cout<<"Adaugarea a fost efectuata!"<<' ';
system("pause");
}
ultim->urm=NULL;
system("cls");
q=prim;
prim=prim->urm;
delete q;
}

void caz1 (nod *&prim)


{
nod *q;
q=new nod;
cout<<"Introduceti numele medicamentului:";
cin.get();
cin.get(q->nume,30);

/*cout<<"Introduceti tara de origine a medicamentului:";


cin.get();
cin.get(q->tara_origine,30);
cout<<"Introduceti numarul de cutii din medicamentul actual:";
cin>>q->nr_cutii;
cout<<"Introduceti data expirarii:"<<'\n';
cout<<"zi:";
cin>>q->data_exp.zi;
cout<<"luna:";
cin>>q->data_exp.luna;
cout<<"anul:";
cin>>q->data_exp.an;
cout<<"Introduceti pretul medicamentului:";
cin>>q->pret; */
if (prim == NULL)
{
prim=q;
prim->urm=NULL;
}
else
{
int ok=0;
nod *p;
p=prim;
while (p->urm != NULL && ok==0)
{
if (strcmp(p->nume,q->nume)==0)
ok=1;
else
p=p->urm;
}
if (strcmp(p->nume,q->nume)==0)
ok=1;
if (ok==1)
{
int x;
cout<<"Medicamentul se afla deja inregistrat, introduceti cate cutii
ati dori sa adaugati:";
cin>>x;
p->nr_cutii += x;
}
else
{
cout<<"Introduceti tara de origine a medicamentului:";
cin.get();
cin.get(q->tara_origine,30);
cout<<"Introduceti numarul de cutii din medicamentul actual:";
cin>>q->nr_cutii;
cout<<"Introduceti data expirarii:"<<'\n';
cout<<"zi:";
cin>>q->data_exp.zi;
cout<<"luna:";
cin>>q->data_exp.luna;
cout<<"anul:";
cin>>q->data_exp.an;
cout<<"Introduceti pretul medicamentului:";
cin>>q->pret;
q->urm=NULL;
p->urm=q;
}

}
cout<<"Adaugarea a fost efectuata !";
system("pause");
}

bool exp (data data_comp, data data_buna)


{
if (data_buna.an>data_comp.an)
return 0;
if (data_buna.an==data_comp.an)
{
if (data_buna.luna>data_comp.luna)
return 0;
if (data_buna.luna==data_comp.luna)
{
if (data_buna.zi>data_comp.zi)
return 0;
}
}
return 1;
}

void caz2 (nod *&prim)


{
int ok=0;
nod *p,*q;
data data_act;
cout<<"Introduceti data actuala :"<<'\n'<<"zi:";
cin>>data_act.zi;
cout<<"luna:";
cin>>data_act.luna;
cout<<"an:";
cin>>data_act.an;
p=prim;
while (p->urm != NULL)
{
if (p->urm->nr_cutii ==0 || exp(p->urm->data_exp,data_act)==0)
{
q=p->urm;
p->urm=q->urm;
delete q;
ok=1;
}
p=p->urm;
}
if (prim->nr_cutii ==0 || exp(p->data_exp,data_act)==0)
{
p=prim;
prim=prim->urm;
ok=1;
delete p;
}
if (ok==1)
cout<<"Stergerea a fost efectuata";
else
cout<<"Nu a fost eliminat nici un medicament";
cout<<'\n';
}

void caz3 (nod *prim)


{
nod *p,*q;
p=prim;
while (p->urm !=NULL)
{
q=p->urm;
while (q != NULL)
{
if (strcmp(p->nume,q->nume)>0)
{
swap(p->nr_cutii,q->nr_cutii);
swap(p->data_exp,q->data_exp);
swap(p->nume,q->nume);
swap(p->pret,q->pret);
swap(p->tara_origine,q->tara_origine);
}
q=q->urm;
}
p=p->urm;
}
cout<<"Medicamentele se afla in ordine alfabetica \n";
}

void caz4 (nod *prim)


{
int ok=0;
char s[30];
nod *p;
cout<<"Introduceti medicamentul pe care-l cautati :";
cin.get();
cin.get(s,30);
p=prim;
while (p!=NULL && ok==0)
{
if (strcmp(s,p->nume)==0 && p->nr_cutii>0)
{
ok=1;
cout<<"Medicamentul se afla pe stoc, fiind disponibil";
if (p->nr_cutii ==1)
cout<<"a o cutie";
else
cout<<"e"<<p->nr_cutii<<" cutii";
}
else
p=p->urm;
}
if (ok==0)
cout<<"Medicamentul nu se afla pe stoc";
cout<<'\n';
}

void caz5 (nod *prim)


{
nod *p;
char x[30];
cout<<"Introduceti tara de origine a medicamentelor pe care le cautati:";
cin.get();
cin.get(x,30);
p=prim;
while (p != NULL)
{
if (strcmp(p->tara_origine,x)==0)
cout<<p->nume<<'\n';
p=p->urm;
}
}

void caz6 (nod *prim)


{

void caz7 (nod *prim)


{
if (prim==NULL)
cout<<"Deocamdata nu se afla nici un medicament pe stoc."<<'\n';
else
{
nod *p;
p=prim;
while (p != NULL)
{
cout<<p->nume<<','<<p->nr_cutii<<'\n';
p=p->urm;
}
}
}

int main()
{
creare(prim);
int cerinta,b;
cout<<"Ce operatie ati dori sa efectuati ?"<<'\n';
cout<<"1) Adaugati un medicament pe stoc"<<'\n';
cout<<"2) Eliminati medicamentele expirate sau care nu se afla pe stoc"<<'\n';
cout<<"3) Aranjati medicamentele in ordine alfabetica"<<'\n';
cout<<"4) Starea actuala a unui medicament"<<'\n';
cout<<"5) Afisarea medicamentelor cu o anumita tara de origine"<<'\n';
cout<<"6) Afisarea medicamentelor cu pret intre doua valori"<<'\n';
cout<<"7) Afisarea stocului de medicamente"<<'\n';
cout<<"8) Iesire din program"<<'\n';
cin>>cerinta;
do
{

switch (cerinta)
{
case 1 :
system("cls");
caz1(prim);
break;
case 2 :
system("cls");
caz2(prim);
break;
case 3 :
system("cls");
caz3(prim);
break;
case 4 :
system("cls");
caz4(prim);
break;
case 5 :
system("cls");
caz5(prim);
break;
case 6 :
system("cls");
caz6(prim);
break;
case 7 :
system("cls");
caz7(prim);
break;
default :
if (cerinta != 8)
cout<<"Nu s-a introdus o cerinta valabila, incercati din nou \n";
break;
}
if (cerinta != 8)
{
cout<<"1)Inapoi la meniul principal"<<'\n';
cout<<"2)Iesire din program"<<'\n';
cin>>b;
if (b==1)
{
system("cls");
cout<<"Ce operatie ati dori sa efectuati ?"<<'\n';
cout<<"1) Adaugati un medicament pe stoc"<<'\n';
cout<<"2) Eliminati medicamentele expirate sau care nu se afla pe
stoc"<<'\n';
cout<<"3) Aranjati medicamentele in ordine alfabetica"<<'\n';
cout<<"4) Starea actuala a unui medicament"<<'\n';
cout<<"5) Afisarea medicamentelor cu o anumita tara de
origine"<<'\n';
cout<<"6) Afisarea medicamentelor cu pret intre doua valori"<<'\n';
cout<<"7) Afisarea stocului de medicamente"<<'\n';
cout<<"8) Iesire din program"<<'\n';
cin>>cerinta;
}
else
if (b==2)
cerinta=8;
else
{
cout<<"Nu s-a introdus o cerinta valabila, incercati din nou
\n";
system("pause");
}
}
} while (cerinta != 8);
cout<<"Va multumesc pentru ca ati folosit acest program!";
return 0;
}

S-ar putea să vă placă și