• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

konstruktori vo izvedeni klasi!!!!

  • Ја почнал/а темата
  • #1

mac-ufs

Intern
23 април 2008
611
19
znaci zadacava ke me ubie....mi pojavue eror na konstruktorot...vaka sega...eve go kodot

Код:
/*

Da se kreira hierarhija na klasi so koi ke bidat pretstaveni razlicnite vidovi na 
opticki diskovi: CD i Blu-ray.Da se definira apstraktna klasa Disc od koja ke bidat 
izvedeni dvete klasi.Za sekoj vid da se cuvaat slednite podatoci: proizvoditel (30 znaci),
kapacitet vo GB (decimalen broj),brzina na transfer vo Mbit/s (cel broj), cena vo denari 
(cel broj). Za sekoe CD dopolnitelno se cuva i dali e prebrislivo(boolean). Za sekoj 
Blu-ray disk dopolnitelno se cuva i od kolku sloja e sostaven (cel broj).(10 poeni)

Za sekoj objekt od dvete izvedeni klasi treba da bidat raspolozlivi metodite:

 	- konstruktor so 5 argumenti koi odgovaraat na podatocnite elementi, (5 poeni),

 	- set_ i get_ metodi za postavuvawe i citawe na proizvoditelot na DVD/Blu-ray kako 
 	  i za kapacitetot na DVD/Blu-ray (5 poeni)

 	- preoptovaruvanje na operatorot == spored imeto na proizvoditelot. (10 poeni)

 	- metodot Cena koj ja odreduva cenata na eden bajt (B), pritoa da se vnimava od kolku 
 	  sloja e sostaven Blu-ray diskot. Dokolku  CD-to e preblislivo negovata cena dvojno 
 	  se zgolemuva (10 poeni).

 	- metod za pecatewe na informaciite za dadeno DVD print() vo format:(10 poeni)



		CD (Princo, 700 MB, 1Mb/s, 10 denari, RW),



odnosno za Blu-ray:



     Blu-ray (JVC, 50 GB, 108Mb/s, 1000denari, 2 sloja)  

*/
 
#include<iostream>
using namespace std;

class disk
{
protected:
char proizvoditel[30];
double kapacitet;
int brzina;
int cena;

public:
disk(){};
disk(char *manufacturer,double capacity,int speed,int cost)
{
strcpy(proizvoditel,manufacturer);
kapacitet=capacity;
brzina=speed;
cena=cost;
};
virtual ~disk(){};

virtual void setProizvoditel();
virtual void setKapacitet();
virtual void setBrzina();
virtual void setCena();

virtual char *getProizvoditel();
virtual double getKapacitet();
virtual int getBrzina();
virtual int getCena();

bool operator==(const disk &t)
{
return strcmp(t.proizvoditel,proizvoditel);
};
virtual void cenaB();
virtual void print();
};

class CD:public disk
{
private:
bool RW;

public:

CD():disk(){};
CD(bool CDRW,const disk &z):disk(z),RW(CDRW){};

void setProizvoditel(){cout<<"proizvoditel: "; cin>>proizvoditel;};
void setKapacitet(){cout<<"kapacitet(vo MB): "; cin>>kapacitet;};
void setBrzina(){cout<<"brzina(vo Mb/s): "; cin>>brzina;};
void setCena(){cout<<"cena(vo denari): "; cin>>cena;};
void setRW(){cout<<"dali e RW,1(da),0(ne)"; cin>>RW;};
void typeRW(){if(RW=='1') cout<<"RW"; else if(RW=='0') cout<<"ednokratno";};

char *getProizvoditel(){return proizvoditel;};
double getKapacitet(){return kapacitet;};
int getBrzina(){return brzina;};
int getCena(){return cena;};

void cenaB()
{
int cenaB,kapacitetB,cenaRW;
kapacitetB=kapacitet*1024;
cenaB=cena/kapacitetB;
cout<<"cenata na eden B(bajt) e: "<<cenaB;
if(RW=='1') cenaRW=cena*2; {cout<<"bidejki CD-to e RW cenata e: "<<cenaRW<<endl;};
};

void print()
{
cout<<"CD "<<"("<<proizvoditel<<", "<<kapacitet<<" MB, "<<brzina<<"Mb/s, "<<cena<<"denari, "<<")"<<endl;
};
};

class bluray:public disk
{
private:
int sloevi;

public:

bluray():disk(){};
bluray(int dvojno,const disk w):disk(w),sloevi(dvojno){};

void setProizvoditel(){cout<<"proizvoditel: "; cin>>proizvoditel;};
void setKapacitet(){cout<<"kapacitet(vo GB): "; cin>>kapacitet;};
void setBrzina(){cout<<"brzina(vo Mb/s): "; cin>>brzina;};
void setCena(){cout<<"cena(vo denari): "; cin>>cena;};
void setSloevi(){cout<<"sloevi(1 ili 2): "; cin>>sloevi;};
void typeSloevi(){if(sloevi=='1') cout<<"1 sloj"; else if(sloevi=='2') cout<<"2 sloevi";};

char *getProizvoditel(){return proizvoditel;};
double getKapacitet(){return kapacitet;};
int getBrzina(){return brzina;};
int getCena(){return cena;};

void cenaB()
{
int cenaB,kapacitetB,kapacitetMB,cena2;
kapacitetMB=kapacitet*1024;
kapacitetB=kapacitetMB*1024;
cenaB=cena/kapacitetB;
cout<<"cenata na eden B(bajt) e: "<<cenaB;
if(sloevi=='2') cena2=cena*2; {cout<<"bidejki DISK-ot e dvosloen cenata e: "<<cena2<<endl;};
};

void print()
{
cout<<"Blu-Ray"<<"("<<proizvoditel<<", "<<kapacitet<<"GB, "<<brzina<<"Mb/s "<<cena<<"denari, "<<")"<<endl;
};
};

int main()
{
CD cdinja[100];
bluray blurays[100];
int n,m;
cout<<"kolku CD-nja sakas da se proveruvaat i pecatat:";
cin>>n;
cout<<"kolku blu-ray sakas da se proveruvaat i pecatat:";
cin>>m;

for(int i=0;i<n;i++)
{
cdinja[i].setProizvoditel();
cdinja[i].setKapacitet();
cdinja[i].setBrzina();
cdinja[i].setCena();
cdinja[i].cenaB();
cout<<"\n";
cout<<"\n";
}

for(int i=0;i<m;i++)
{
blurays[i].setProizvoditel();
blurays[i].setKapacitet();
blurays[i].setBrzina();
blurays[i].setCena();
blurays[i].cenaB();
cout<<"\n";
cout<<"\n";
}
cout<<"==========vneseni se podatocite...tie izgledaat vaka==========";
for(int i=0;i<n;i++)
{
cdinja[i].print();
cout<<"\n";
cout<<"\n";
}
for(int i=0;i<m;i++)
{
blurays[i].print();
cout<<"\n";
cout<<"\n";
}
return 0;
}
eve sto javuva kompajlerot:

Код:
[email protected]:~/Desktop$ g++ blueray.cpp
/tmp/ccwDx1M2.o: In function `disk::disk()':
blueray.cpp:(.text._ZN4diskC2Ev[disk::disk()]+0x4): undefined reference to `vtable for disk'
/tmp/ccwDx1M2.o: In function `disk::~disk()':
blueray.cpp:(.text._ZN4diskD2Ev[disk::~disk()]+0x7): undefined reference to `vtable for disk'
/tmp/ccwDx1M2.o:(.rodata._ZTI2CD[typeinfo for CD]+0x8): undefined reference to `typeinfo for disk'
/tmp/ccwDx1M2.o:(.rodata._ZTI6bluray[typeinfo for bluray]+0x8): undefined reference to `typeinfo for disk'
collect2: ld returned 1 exit status
[email protected]:~/Desktop$
ako znae nekoj neka pise
 

Нови мислења

Последни Теми

Статистика

Теми
43,581
Мислења
823,916
Членови
28,080
Најнов член
ciksa
На врв Дно