• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przeciążanie operatorów a tworzenie obiektu

Object Storage Arubacloud
0 głosów
181 wizyt
pytanie zadane 1 lutego 2020 w C i C++ przez mat19 Obywatel (1,580 p.)

Cześć, mam problem z tym zadaniem, a mianowicie z przeciążeniem operatorów zaznaczonych pogrubioną kursywą, oraz deklaracją obiektów.  Jeżeli mógłby ktoś napisać jak przeciążyć te operatory byłbym wdzięczny

 

 Podaj implementację klasy Samochod, która
w sekcji prywatnej ma pola
- ileSiedzacych - pole stałe o dodatniej wartości całkowitej, określające liczbę miejsc siedzących w samochodzie,
- ileZajetych – pole o zmiennej wartości całkowitej, reprezentujące liczbę miejsc zajętych
oraz w sekcji publicznej
- konstruktor ustawiający wartości pól na podstawie dwóch parametrów o wartościach domyślnych. Wartości
domyślne to 5 w celu ustawienia pola max oraz 0 (zero) dla pola zajete;
- metodę Wolnych dającą w wyniku wywołania liczbę wolnych miejsc siedzących;
- metodę Pasazerow dającą w wyniku wywołania liczbę zajętych miejsc siedzących;
-przeciążony operator += , metoda pozwala na powiększenie liczby zajętych miejsc siedzących o co
najwyżej ustaloną nieujemną liczbę całkowitą, wynikiem metody jest liczba zajętych miejsc siedzących
- przeciążony operator-= , metoda pozwala na zmniejszenie liczby zajętych miejsc siedzących o co
najwyżej ustaloną nieujemną liczbę całkowitą, wynikiem metody jest liczba zajętych miejsc siedzących po
tej operacji

przeciążony operator+= , realizujący przesiadanie z innego samochodu możliwie największej liczby
pasażerów, wynikiem metody jest liczba zajętych miejsc siedzących (pamiętaj o modyfikacji drugiego
samochodu);
-przeciążony operator-= , realizujący przesiadanie do innego samochodu możliwie największej liczby
pasażerów, wynikiem metody jest liczba zajętych miejsc siedzących (pamiętaj o modyfikacji drugiego
samochodu);

Ponadto powinna być możliwość korzystania z operatora << wstawiania do strumienia wyjściowego
informacji o samochodu zawierającej maksymalną liczbę miejsc siedzących i aktualną liczbę miejsc zajętych.
 Zadeklaruj
obiekt A45 reprezentujący samochod mający 5 miejsc siedzących w tym 3 zajętych,
obiekt A32 reprezentujący samochodr mający 8 miejsca siedzące w połowie zajęte (zajęte 4),
wskaźnik A51 na dynamicznie utworzony pusty samochod o 5 miejscach siedzących.
 Zakładamy, że nie wiemy jakie operacje zostały wykonane na wyżej wymienionych obiektach.
Należy napisać instrukcje pozwalające na
a) przesiadkę wszystkich osób z A45 do A32 i do samochodu wskazywanego przez A51;
b) opuszczenie A32 przez 7 osób;
c) wejście 3 osób do A45 i 4 osób do samochodu wskazywanego przez A51;
d) wyświetlenie liczby pasażerów we wszystkich trzech samochodach razem;
e) wyświetlenie informacji o samochod A32;
f) opuszczenie A32 przez wszystkie znajdujące się w nim osoby;
g) wyświetlenie informacji czy samochod wskazywany przez A51 jest pełny (wszystkie miejsca zajete)

#include <iostream>

using namespace std;

class Samochod
{
private:
    const int  ileSiedzacych;
    int ileZajetych;
public:
    Samochod(int s=5, int z=0);
    int Wolnych();
    int Pasazerow();
    Samochod &operator+=(Samochod k);
    Samochod & operator-=(Samochod k);

};

Samochod &Samochod::operator+=(Samochod k)
{
    ileZajetych+=k.ileZajetych;
    return *this;
}


int Samochod::Pasazerow()
{
    return ileZajetych;
}

int Samochod::Wolnych()
{
    return ileSiedzacych-ileZajetych;
}

Samochod::Samochod(int s, int z):ileSiedzacych(s)
{
    ileZajetych=z;
    if(ileZajetych<0 ||  ileZajetych>ileSiedzacych)
    {
        ileZajetych=0;
    }
}
int main()
{
    
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 1 lutego 2020 przez tangarr Mędrzec (154,840 p.)

Musisz zmodyfikować oba samochody. Popraw definicje tych operatorów: użyj referencji zamiast kopii.

    Samochod &operator+=(Samochod &k);
    Samochod &operator-=(Samochod &k);

Żeby dokonać "przeładunku" musisz sprawdzić ile masz miejsc w samochodzie docelowym i porównać to z ilością pasażerów w samochodzie "opuszczanym". Mniejsza z tych dwóch wartości musi zostać wykorzystana w modyfikacji pól ileZajętych w obu pojazdach.

Podobne pytania

+1 głos
1 odpowiedź 846 wizyt
0 głosów
1 odpowiedź 207 wizyt
0 głosów
1 odpowiedź 454 wizyt

92,556 zapytań

141,404 odpowiedzi

319,563 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...