• 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

0 głosów
141 wizyt
pytanie zadane 1 lutego 2020 w C i C++ przez mat19 Obywatel (1,200 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 VIP (140,280 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ź 646 wizyt
0 głosów
1 odpowiedź 209 wizyt
+1 głos
0 odpowiedzi 100 wizyt

88,701 zapytań

137,308 odpowiedzi

306,748 komentarzy

58,894 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...