Имам два кода.
Прашањата се внатре во кодот.
Во првиот заглавувам кај virtuel ми наоѓа грешка која не можам да ја лоцирам...
Ако може некој да ми помогне сегде каде што имам грешка во кодотovite да ми укаже. (najcesto e sintaksa i kaj funkciite)
еве го тектот на првиот код:
Да се креира хиерархија на класи за репрезентација на музичко и сликарско уметничко дело. За потребите на оваа хиерархија да се дефинира апстрактна класа UmetnickoDelo од која ќе бидат изведени двете класи MuzickoDelo и SlikarskoDelo. Во класата UmetnickoDelo се чуваат податоци за авторот на уметничкото дело (динамички алоцирана низа од знаци) и цената на уметничкото дело (float).
За класата MuzickoDelo дополнително се чува годината кога е направено делото (int).
За класата SlikarskoDelo дополнително се чува степенот на оштетеност на делото во проценти (int).
За секој објект од двете изведени класи треба да бидат на располагање следниве методи:
- Конструктор со aргументи кои одговараат на податочните членови
- Copy конструктор
- Set и get методи
- Метода за пресметување на цената на уметничките дела
o Иницијалната цена на музичкото дело се зголемува за 10% доколку тоа е изработено во 17 век.
o Иницијалната цена на сликарското дело процентуално се намалува за степенот на неговата оштетеност (пр. Ако процентот на оштетеност на делото е 30% неговата иницијална цена се намалува за 30%).
- Проптоварување на операторот ==, кој ги споредува уметничките дела според нивната цена
- Преоптоварување на операторот << за печатење на сите податоци за уметничките дела
Сите променливи во класите се чуваат како приватни.
PHP:
#include<iostream>
#include<cstring>
using namespace std;
class UD
{ private:
char *pod;
float cena;
public:
UD(char *pod1,float cena1)
{
pod=new char[strlen(pod1)+1];
strcpy(pod=pod1);
cena=cena1;
}
UD(const UD & x)
{
pod=new char[strlen(x.pod)+1];
strcpy(pod=x.pod);
cena=x.cena;
}
char *getpod(){return pod;}
float getcena(){return cena;}
void setpod(char *pod1){
pod=new char[strlen(pod1)+1];
strcpy(pod,pod1);
}
void setcena(float cena1){cena=cena1;}
virtual float cena()= 0; // sto e tuka greshkata :@ ??
friend bool operator ==(UD & a,UD & b)
{
return (a.cena()==b.cena()); //cena se povikuva kako funkcija
} //nemoj slucajno getcena da si stavil
friend ostream & oprerator<<(ostream & out,UD & x)
{
out<<"podatoci:"<<x.pod<<"cena:"<<x.cena<<endl; //vnimavaj na X.pod.. na X
return out;
}
};
classMD:public UD
{ private:
int god;
public:
MD(char *pod1,float cena1,int god1):UD(pod1,cena1)
{
god=god1;
}
MD(const MD & x):UD(x)
{
god=x.god;
}
int getgod(){return god;}
void setgod(int god1){god=god1;}
float cena()
{
if(god<1700 && god>1600)
getcena()+=((getcena()/100)*10);
return getcena(); // dali cenata se menuva vo nejzinata adresa?
//ili samo ja zemame kako kopija?
//zatoa sto ako tuka return getcena i ostane cena vo private smeneta togas
//sleden pat od drugata klasa koga kje povikame cena nema da bide taa tuku ovaa.
}
friend ostream & operator<<(ostream & out,MD & x)
{
out<<(UD)x;
out<<"godina"<<x.god;
return out;
}
};
class SD:public UD
{
private:
int oshtetenost;
public:
SD(char *pod1,float cena1,int o):UD(pod1,cena1)
{
oshtetenost=o;
}
SD(const SD & x):UD(x)
{
oshtetenost=x.o;
}
int getoshtetenost(){return oshtetenostl;}
void setoshtetenost(int o){oshtetenost=o;}
float cena()
{
return (getcena()-((getcena()/100)*oshtetenost));
}
friend ostream & operator<<(ostream & out,SD & x)
{
out<<(UD)x;
out<<"oshtetenost:"<<x.oshtetenost<<endl;
return out;
}
};
int main()
{
return 0;
}
Eве го текстот за вториот код. (место 'о' ми го копира со 'п' ама се разбира)
2.(50 поени)Да се напише класа Osiguruvanje кпја ќе спдржи инфпрмации за пплисите издадени пд една псигурителна кпмпанија. За секпе псигуруваое се впдат инфпрмации за: иметп на псигуреникпт (низа пд 30 знаци), цената на премијата штп се плаќа за псигуруваое (реален брпј) и земјите за кпи штп важи псигуруваоетп (динамички алпцирана низа пд динамички алпцирани низи пд знаци). За класата да се пбезбеди кпнструктпр, copy кпнструктпр и (чисто виртуелна)функција за пресметка на сппдветната вкупна премија штп треба да се плати .
Од пваа класа да се изведат класи за ппишуваое на патничко осигурување (Patnicko) и каско осигурување (Kasko).
За патничките осигурувањае пптребенбрпјпт на паспш на псигуреникпт (низа пд 8 знаци), сумата дпплатена за ппсебни услуги (акп не се кпристат ппсебни услуги сумата е 0) и евентуалнипт пппуст изразен вп прпценти (реален брпј). При пресметуваоетп на вкупната премија, на пснпвната сума се дпдава сумата за ппсебни услуги, а пптпа се пресметува пппустпт.
За каско осигурувањата се чува регистарскипт брпј на автпмпбилпт (низа пд 8 знаци), мпделпт на впзилп (низа пд 30 знаци)и старпста на впзилптп изразена во месеци (цел брпј). При пресметуваое на вкупната премија, сумата кпја треба да се плати се згплемува за 3% на секпи 5 години старпст на впзилптп.
Да се препптпвари пператпрпт <за сппредба на вкупната премија кпја треба да се плати за да рабпти сп псигуруваоа пд билп какпв тип (и патнички и каскп). Пптпа да се напише функција кпја за дадена низа пд псигуруваоаќе гп испечати псигуреникпт кпј платил најгплема премија.
PHP:
#include<iostream>
#include<cstring>
using namespace std;
class Osiguruvanje
{
private:
char ime[30];
float prem;
char **niza;
int br;
public:
Osiguruvanje(char *ime1,float prem1,char **niza1,int br1)
{
strcpy(ime,ime1);
prem=prem1;
niza=new char*[br1];
for(int i=0;i<br1;i++)
{
niza[i]=new char[strlen(niza1[i])+1];
strcpy(niza[i],niza1[i]);
}
br=br1;
}
Osiguruvanje(const Osiguruvanje & x)
{
strcpy(ime,x.ime);
prem=x.prem;
niza=new char*[x.br];
for(int i=0;i<x.br;i++)
{
niza[i]=new char[strlen(x.niza[i])+1];
strcpy(niza[i],x.niza[i]);
}
br=x.br;
}
virtual float premija()=0;
friend bool operator<(Osiguruvanje & a, Osiguruvanje & b)
{
return (a.premija()<b.premija());
}
void pecati(Osiguruvanje **niza, int br)
{
for(int i=0;i<br;i++)
{
//koja najgolema premija da se ispecati?
}
}
};
class Patos:public Osiguruvanje
{
private:
char pasos[8]; //sekogash imaat konstruktor i copy constr.
int suma;
float popust;
public:
Patos(char *ime1,float prem1,char **niza1,int br1,char *pasos1,int suma1,float popust1):Osiguruvanje(ime1,prem1,niza1,br1)
{
strcpy(pasos,pasos1);
suma=suma1;
popust=popust1;
}
Patos(const Patos & x):Osiguruvanje(x)
{
strcpy(pasos,x.pasos);
suma=x.suma;
popust=x.popust;
}
float premija()
{
float vk;
if(suma!=0)
{
vk=getprem()+suma;
return ( vk-((vk/100)*popust)); // go odzemash popustot
}
return (getprem() - ((getprem/100)*popust));
}
};
class Kasko:public Osiguruvanje
{
private:
char reg[8];
char model[30];
int star;
public:
Kasko(char *ime1,float prem1,char **niza1,int br1,char *reg,char *model1,int star1):Osiguruvanje(ime1,prem1,niza1,br1)
{
strcpy(reg,reg1);
strcpy(model,model1);
star=star1;
}
Kasko(const Kasko & x):Osiguruvanje(x)
{
strcpy(reg,x.reg);
strcpy(model,x.model);
star=x.star
}
float premija()
{
int god=(star/(5*12))
for(int i=0;i<god;i++)
getprem()=getprem()*(3/100);
return getprem();
}
};
int main()
{
return 0;
}
//sto znacese toa deka site promenlivi se privatni?