You are on page 1of 3

Термин 1 21.05.

2014 Задача 1
Date: April 17, 2016 at 11:00:36 AM GMT+2
To: sanjasimovska@yahoo.com

#include <iostream>
#include <cstring>
using namespace std;
struct Datum
{
    int den;
    int mesec;
    int godina;
};
struct Ucestvo
{
    int gorna;
    int dolna;
    int osvoenoMesto;
    int oblast;//0-8
    Datum datumNatprevar;

    bool daliPrvoMesto()
  {
        if(osvoenoMesto==1)
            return true;
        else
            return false;
  }
    bool daliOdminat(Datum d)
  {
        if(datumNatprevar.godina<d.godina)
            return true;
        if(datumNatprevar.godina>d.godina)
            return false;
        if(datumNatprevar.mesec<d.mesec)
            return true;
        if(datumNatprevar.mesec>d.mesec)
            return false;
        if(datumNatprevar.den<d.den)
            return true;
        if(datumNatprevar.den>d.den)
            return false;
        return false;
  }

};
struct Natprevaruvac
{
    char ime[35];
    char prezime[35];
    int oblast;//0-8
    Ucestvo ucestva[15];
    int brUcestva;
    void pecati()
  {
        cout<<ime<<" "<<prezime<<" Oblast: "<<oblast<<endl;
        for(int i=0;i<brUcestva;i++)
    {
            cout<<"Ucestvo na natprevar vo oblast "<<ucestva[i].oblast<<" Osvoeno:
"<<ucestva[i].osvoenoMesto<<" mesto."<<endl;
            //cout<" Datum na oddrzuvanje:
"<<ucestva[i].datumNatprevar.den<<"/"<<ucestva[i].datumNatprevar.mesec<<"/"<<ucestva[i].datumNatprevar.g
odina<<endl;
    }
  }
    void azuriraj(char im[])
  {
        strcpy(ime,im);
  }
    void azuriraj(int ob)
  {
        oblast = ob;
  }
    void azuriraj()
  {
        oblast = 0;
  }
    void azuriraj(Ucestvo *natprevari,int brNatprevari)
  {
        brUcestva = brNatprevari;
        for(int i=0;i<brUcestva;i++)
    {
            ucestva[i] = natprevari[i];
    }
  }
};
int main()
{
    Natprevaruvac ucesnik;
    Ucestvo natprevari[10];
    int brNatprevari;
    cout<<"Vnesi ime i prezime na natprevaruvacot"<<endl;
    cin>>ucesnik.ime>>ucesnik.prezime;
    cout<<"Vnesi oblast vo koja se natprevaruva (0-8)\n"<<endl;
    cin>>ucesnik.oblast;
    cout<<"Na kolku natprevari ke ucestvuvas?"<<endl;
    cin>>brNatprevari;
    for(int i=0;i<brNatprevari;i++)
  {
        cout<<"Vnesi gorna i dolna granica na poeni"<<endl;
        cin>>natprevari[i].gorna>>natprevari[i].dolna;
        cout<<"Vnesi oblast na natprevarot"<<endl;
        cin>>natprevari[i].oblast;
        cout<<"Koe mesto e osvoeno?"<<endl;
        cin>>natprevari[i].osvoenoMesto;
        cout<<"Koga e oddrzan natprevarot?"<<endl;
    
cin>>natprevari[i].datumNatprevar.den>>natprevari[i].datumNatprevar.mesec>>natprevari[i].datumNatprevar.g
odina;
  }
    ucesnik.azuriraj(natprevari,brNatprevari);
    ucesnik.azuriraj("Dragan");
    ucesnik.azuriraj();//oblast = 0
    ucesnik.pecati();
    int brPrviMesta=0;
    for(int i=0;i<brNatprevari;i++)
  {
        if(ucesnik.ucestva[i].daliPrvoMesto()==true)
    {
            brPrviMesta++;
    }
  }
    cout<<"Natprevaruvacot ima osvoeto : "<<brPrviMesta<<" prvi mesta"<<endl;
    return 0;
}

Втор парцијален испит по ПРОГРАМИРАЊЕ И АЛГОРИТМИ 2 Термин 1 21.05.2014 1. (60 поени) Да


се напише програма за работа со натпреварувачи. Потребно е да се дефинира структура Ucestvo и
структура Natprevaruvac. За секој натпреварувач се чуваат информации за името и презимето,
областа во која се натпреварува, листа од учества на натпревари и информација за тоа на колку
натпревари има учествувано. Има 9 области на натпреварување, нумерирани од 0 до 8, додека
пак секој натпреварувач може да учествува во најмногу 15 различни натпревари. Имињата на
натпреварувачите се ограничени на 70 знаци. За структурата Natprevaruvac да се дефинираат
следниве методи: - Печати  за печатење на информациите за натпреварувачот во формат Oblast: -
Azuriraj  За ажурирање на податоците за натпреварувачите o Доколку се повика со низа од знаци
тогаш се ажурира името на натпреварувачот o Доколку се повика со цел број, тогаш се ажурира
областа во која се натпреварува; доколку се изостави, тогаш се натпреварува во област 0 o Да се
дефинира верзија на Azuriraj за ажурирање на натпреварите (листа од натпревари и број на
натпревари). За секое учество се чуваат информации за долната и горната граница на поени што
можат да се доделат. За секое учество исто така се чуваат и податоци за освоеното место од
страна на кандидатот, областа која што ја опфаќа и датумот (ден, месец, година) на учествување.
За натпреварите да се дефинираат функции за проверка дали на учеството има освоено прво
место и дали натпреварот е одминат (тековниот датум се праќа како аргумент на функцијата). 2.
(40 поени) Да се дефинира класа Natprevaruvac за чување на податоците за натпреварувачите. За
секој натпреварувач се знае името, областа во која се натпреварува, местото кое што го има
освоено, дата на раѓање и кој е рејтингот. За класата да се дефинираат потребните
конструктори/деструктори. Да се дефинираат сите GET функции, додека пак само потребните SET
функции. Има три типа на натпреварувачи: Тенисер, Голфер и Ракометар. За тенисерите
дополнително се чуваат информации за бројот на освоени титули и брзина на сервирање. За
голферите дополнително се чува областа во која што се натпреваруваат (миниголф или регуларен)
и листа од бројот на потези за внес на топчето во соодветната дупка (има точно 18 дупки). За
ракометарите се знае позицијата на која играат и бројот на дадени/примени голови. Рејтингот на
тенисерите се зголемува за 10% за секоја титула освоена, за голферите се зголемува за средниот
број на потези потребен за внес на топчето во дупка, додека пак за ракометарите се намалува за
бројот на примени голови, а се зголемува за бројот на дадени голови. Да се дефинираат сите
конструктори во изведените класи и да се преоптоварат потребните функции од основните класи.
Да се функција надвор од класите која ќе добие листа од ракометари и истите ќе ги подреди
според нивниот рејтинг. На екран да се отпечатат имињата и презимињата на ракометарите во
опаѓачки редослед.

You might also like