You are on page 1of 7

Влезници Problem 8 (1 / 1)

Да се дефинира класа Vleznica, во коjа се чуваат информации за:

спортскиот натпревар на кој се однесува влезницата (низа од максимум 50 знаци),

основна цена на влезницата (децимален број).

Од оваа класа да се изведат две нови класи VleznicaSedenje и VleznicaStoenje. За класата


VleznicaSedenje дополнително се чува блокот (цел број) и редот (цел број). За класата
VleznicaStoenje дополнително се чува податок за трибината (S - јужна, N - северна, E - источна, W -
западна) (10 поени).

За секоjа од класите да се напишат потребните коструктори, set и get методи (10 поени).

Да се обезбеди функција float cena() за пресметување на продажната цена на влезниците на


следниот начин (15 поени):

За влезница за седење, цената се зголемува за 40% од основната цена, ако влезницата е за


седиште што се наоѓа под осми ред,

односно, за 20% од основната цена, ако седиштето се наоѓа меѓу осми и петнаесетти ред.

Во сите други случаи продажната цена на влезницата е еднаква на основната цена.

За влезница за стоење, цената се зголемува за 30% од основната цена, ако влезницата е за

јужната трибина. Во сите други случаи продажната цена на влезницата е еднаква на основната
цена.

Да се напише функциjа najmalaCena, што како аргумент прима низа од покажувачи кон влезници и

нивниот број и го печати натпреварот и цената на влезницата со најмала продажна цена. (15
поени)

#include <iostream>

#include <cstring>
using namespace std;

class Vleznica{

private:

char natprevar[50];

float Cena;

public:

Vleznica(){};

Vleznica(char *nat,float cen){

strcpy(natprevar,nat);

Cena=cen;

float get_cena(){

return Cena;

char *get_natprevar(){

return natprevar;

virtual float cena()=0;

virtual ~Vleznica(){};

};

class VleznicaSedenje:public Vleznica{


private:

int blok;

int red;

public:

VleznicaSedenje(char *nat,float cen,int b,int r):Vleznica(nat,cen){

blok=b;

red=r;

float cena(){

float cena;

if (red<8)

return get_cena()+(get_cena()*40/100);

else if (red>=8&&red<=15)

return get_cena()+(get_cena()*20/100);

else

return get_cena();

};

};

class VleznicaStoenje:public Vleznica{

private:

char tribina;
public:

VleznicaStoenje(char *nat,float cen,char t):Vleznica(nat,cen){

tribina=t;

float cena(){

if (tribina=='S')

return get_cena()+(get_cena()*30/100);

else

return get_cena();

};

};

void najmalaCena(Vleznica **v,int n){

Vleznica *pom;

int i=0;

for(int j=i;j<n;j++)

if (v[i]->cena()>v[j]->cena()){

pom=v[i];

v[i]=v[j];

v[j]=pom;

cout<<v[i]->get_natprevar()<<endl<<v[i]->cena();
};

int main() {

int n;

cin >> n;

Vleznica** vleznici = new Vleznica*[n];

for(int i = 0; i < n; ++i) {

char ime[30];

float osnovnaCena;

cin >> ime >> osnovnaCena;

if(i % 2) {

int blok, red;

cin >> blok >> red;

vleznici[i] = new VleznicaSedenje(ime, osnovnaCena, blok, red);

} else {

char tribina;

cin >> tribina;

vleznici[i] = new VleznicaStoenje(ime, osnovnaCena, tribina);

najmalaCena(vleznici, n);

for(int i = 0; i < n; ++i) {


delete vleznici[i];

delete [] vleznici;

return 0;

Sample input

GameA

100

GameB

100

1 10

GameC

200

GameD

100

27

GameE

200

Sample output

GameB
120

You might also like