Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Влезници Problem 16 (0 / 0)
- Да се дефинира класа 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 поени)
- Sample input
- 5
- GameA
- 100
- S
- GameB
- 100
- 1 10
- GameC
- 200
- N
- GameD
- 100
- 2 7
- GameE
- 200
- N
- Sample output
- GameB
- 120
- //CODE//
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Vleznica{
- protected:
- char ime[50];
- float osnovnaCena;
- public:
- Vleznica(const char *ime = " ", float osnovnaCena = 0.0){
- strcpy(this -> ime, ime);
- this -> osnovnaCena = osnovnaCena;
- }
- virtual float cena() = 0;
- virtual ~Vleznica(){}
- float getCena(){return this -> osnovnaCena;}
- char *getIme(){return this -> ime;}
- void setCena(float cena){osnovnaCena = cena;}
- void setIme(char *ime){strcpy(this -> ime, ime);}
- };
- class VleznicaSedenje: public Vleznica{
- private:
- int blok, red;
- public:
- VleznicaSedenje(const char *ime = " ", float osnovnaCena = 0.0, int blok = 0, int red = 0):Vleznica(ime,osnovnaCena){
- this -> blok = blok;
- this -> red = red;}
- int getBlok(){return this -> blok;}
- int getRed(){return this -> red;}
- void setBlok(int b){blok = b;}
- void setRed(int r){red = r;}
- float cena(){
- if(red < 8) return this-> osnovnaCena + (osnovnaCena * 0.4);
- else if(red >= 8&&red <= 15) return this -> osnovnaCena + (osnovnaCena * 0.2);
- else return osnovnaCena;}
- };
- class VleznicaStoenje: public Vleznica{
- public:
- char tribina;
- VleznicaStoenje(){}
- VleznicaStoenje(const char *ime, float osnovnaCena, char tribina):Vleznica(ime,osnovnaCena){
- this -> tribina = tribina;}
- float cena(){
- if(this -> tribina == 'S')
- return osnovnaCena + (osnovnaCena * 0.3);
- return osnovnaCena;}
- void setTribina(char t){tribina = t;}
- char getTribina(){return this -> tribina;}
- };
- void najmalaCena(Vleznica **vleznici, int n){
- int tmp = 0;
- float min = vleznici[0] -> cena();
- for(int i = 0 ; i < n; i++){
- if (vleznici[i] -> cena() < min){
- min = vleznici[i] -> cena();
- tmp = i;}
- }
- cout<<vleznici[tmp] -> getIme() << endl;
- cout<<vleznici[tmp] -> cena() << endl;
- }
- 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement