Kod: Zaznacz cały
#include <iostream>
#include <string>
using namespace std;
class Lista;
class Usluga
{
char *nazwaU;
float cenaU;
int iloscU;
Usluga *next;
public:
Usluga(const char *usl,int ile, float cen);
Usluga(Usluga &usl);
Usluga(const char *usl);
friend class Lista;
~Usluga(){delete nazwaU;}
friend ostream &operator<<(ostream &o,Usluga usl);
friend ostream &operator<<(ostream &o,Lista &lis);
};
Usluga::Usluga(const char *usl):cenaU(0),iloscU(1),next(NULL)
{
nazwaU = new char[strlen(usl)+1];
strcpy(nazwaU,usl);
}
Usluga::Usluga(const char *usl,int ile,float cen):cenaU(cen),iloscU(ile),next(NULL)
{
nazwaU = new char[strlen(usl)+1];
strcpy(nazwaU,usl);
}
Usluga::Usluga(Usluga &usl):cenaU(usl.cenaU),iloscU(usl.iloscU),next(NULL)
{
nazwaU=new char[strlen(usl.nazwaU)+1];
strcpy(nazwaU,usl.nazwaU);
}
ostream &operator<<(ostream &o,Usluga usl)
{
o<<usl.nazwaU<<" "<<usl.iloscU<<" "<<(usl.cenaU*usl.iloscU);
return o;
}
class Lista
{
Usluga *first;
public:
Lista():first(NULL){}
void dodaj_usluge(char *nazwa,int ile, float cena);
friend ostream &operator<<(ostream &o, Lista &lis);
Usluga szukaj_usl(const char *naz);
};
Usluga Lista::szukaj_usl(const char *naz)
{
Usluga *tmp=first;
while(tmp!=NULL)
{
if(!strcmp(tmp->nazwaU,naz))tmp=tmp->next;
else return *tmp;
}
}
ostream &operator<<(ostream &o, Lista &lis)
{
Usluga *usl=lis.first;
while(usl!=NULL)
{
o<<*usl<<endl;
usl=usl->next;
}
return o;
}
void Lista::dodaj_usluge(char *nazwa,int ile,float cena)
{
Usluga *nowa_usl=new Usluga(nazwa,ile,cena);
nowa_usl->next=first;
first=nowa_usl;
}
int main()
{
int b;
Lista podst;
podst.dodaj_usluge("DE61",1,33.20);
podst.dodaj_usluge("CAS6",1,3.50);
podst.dodaj_usluge("DE63",1,53);
podst.dodaj_usluge("DA11",1,7.35);
podst.dodaj_usluge("CE1",1,3.20);
podst.dodaj_usluge("SA22",1,9.40);
podst.dodaj_usluge("UE41",1,13.05);
podst.dodaj_usluge("CCE44",1,83.20);
podst.dodaj_usluge("AE6",1,18.20);
cout<<podst.szukaj_usl("CAS6");
}