Advertisement
JStefan

[Vezbi] Formula 1

Mar 29th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.46 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. //вашиот код овде
  6. void string_copy(char* dest, const char* source, const int length) {
  7.     strncpy(dest, source, length);
  8.     dest[length] = 0;
  9. }
  10.  
  11. class F1Trka {
  12.     char ime_trka[30];
  13.     char* ime_vozac;
  14.     float vreme_zavrsuvanje;
  15.     float rekordno_vreme;
  16. public:
  17.     F1Trka(const char* _ime_trka = "", const char* _ime_vozac = "", const float _vreme_zavrsuvanje = 0, const float _rekordno_vreme = 0) {
  18.         string_copy(ime_trka, _ime_trka, 29);
  19.         ime_vozac = new char[strlen(_ime_vozac)+1];
  20.         string_copy(ime_vozac, _ime_vozac, strlen(_ime_vozac));
  21.         vreme_zavrsuvanje = _vreme_zavrsuvanje;
  22.         rekordno_vreme = _rekordno_vreme;
  23.     }
  24.     F1Trka(const F1Trka& obj) {
  25.         string_copy(ime_trka, obj.ime_trka, 29);
  26.         ime_vozac = new char[strlen(obj.ime_vozac)+1];
  27.         string_copy(ime_vozac, obj.ime_vozac, strlen(obj.ime_vozac));
  28.         vreme_zavrsuvanje = obj.vreme_zavrsuvanje;
  29.         rekordno_vreme = obj.rekordno_vreme;
  30.     }
  31.     F1Trka& operator=(const F1Trka& obj) {
  32.         if(this != &obj) {
  33.             string_copy(ime_trka, obj.ime_trka, 29);
  34.             delete [] ime_vozac;
  35.             ime_vozac = new char[strlen(obj.ime_vozac)+1];
  36.             string_copy(ime_vozac, obj.ime_vozac, strlen(obj.ime_vozac));
  37.             vreme_zavrsuvanje = obj.vreme_zavrsuvanje;
  38.             rekordno_vreme = obj.rekordno_vreme;
  39.         }
  40.         return *this;
  41.     }
  42.  
  43.     ~F1Trka() {
  44.         delete [] ime_vozac;
  45.     }
  46.  
  47.     float getVremeZavrsuvanje() { return vreme_zavrsuvanje; }
  48.     float getRekordnoVreme() { return rekordno_vreme; }
  49.  
  50.     void pecati() {
  51.         cout << ime_trka << ", " << ime_vozac << " " <<vreme_zavrsuvanje << endl;
  52.     }
  53. };
  54.  
  55. class F1Shampionat {
  56.     int godina;
  57.     F1Trka* niza;
  58.     int broj_trki;
  59. public:
  60.     F1Shampionat(const int _godina = 0) {
  61.         godina = _godina;
  62.         niza = NULL;
  63.         broj_trki = 0;
  64.     }
  65.     F1Shampionat(const F1Shampionat& obj) {
  66.         godina = obj.godina;
  67.         broj_trki = obj.broj_trki;
  68.         niza = new F1Trka[broj_trki];
  69.         for(int i = 0; i < broj_trki; ++i) {
  70.             niza[i] = obj.niza[i];
  71.         }
  72.     }
  73.     F1Shampionat& operator=(const F1Shampionat& obj) {
  74.         if(this != &obj) {
  75.             godina = obj.godina;
  76.             broj_trki = obj.broj_trki;
  77.             if(broj_trki > 0) delete [] niza;
  78.             niza = new F1Trka[broj_trki];
  79.             for(int i = 0; i < broj_trki; ++i) {
  80.                 niza[i] = obj.niza[i];
  81.             }
  82.         }
  83.         return *this;
  84.     }
  85.  
  86.     ~F1Shampionat() {
  87.         delete [] niza;
  88.     }
  89.  
  90.     void dodadiTrka(F1Trka t) {
  91.         F1Trka* temp = new F1Trka[broj_trki+1];
  92.         for(int i = 0; i < broj_trki; ++i) {
  93.             temp[i] = niza[i];
  94.         }
  95.         delete [] niza;
  96.         niza = temp;
  97.         niza[broj_trki++] = t;
  98.     }
  99.  
  100.     void noviRekordi() {
  101.         for(int i = 0; i < broj_trki; ++i) {
  102.             if(niza[i].getVremeZavrsuvanje() < niza[i].getRekordnoVreme()) niza[i].pecati();
  103.         }
  104.     }
  105. };
  106.  
  107. int main(){
  108.  
  109.     F1Shampionat f1(2015);
  110.     int n;
  111.     float vr, re;
  112.     char ime[30];
  113.     char pobednik[40];
  114.     cin >> n;
  115.     for(int i = 0; i < n; i++){
  116.         cin >> ime;
  117.         cin >> pobednik;
  118.         cin >> vr;
  119.         cin >> re;
  120.         F1Trka t(ime, pobednik, vr, re);
  121.         f1.dodadiTrka(t);
  122.     }
  123.     f1.noviRekordi();
  124.     return 0;
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement