Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Przeciążenia operatorów c++


Rekomendowane odpowiedzi

Opublikowano

Mam do napisania taki program:

 

c4ed70aeb4a99977.jpg

 

 

Napisałem taki kod:

 

 

#include <iostream>

using namespace std;


class WektorD
{
public:
    int rozmiar ;
    int *tablica;


    WektorD(int r)
    {
        rozmiar = r;
        tablica = new int[r];
    }

    WektorD(WektorD &w)
    {
        rozmiar = w.rozmiar;
        tablica = w.tablica;
    }

    WektorD operator+ (WektorD &w){
        int min = w.rozmiar;
        if (rozmiar < min) min = rozmiar;

        WektorD nowy(min);
        for (int i = 0; i < min; i++)
        {
            nowy.tablica[i] = this->tablica[i] + w.tablica[i];
        }
        return nowy;
    }

    WektorD operator* (int a){
        WektorD nowy(rozmiar);
        for (int i = 0; i < rozmiar; i++)
        {
            nowy.tablica[i] = this->tablica[i] * a;
        }
        return nowy;
    }

    WektorD operator/ (int a){
        WektorD nowy(rozmiar);
        for (int i = 0; i < rozmiar; i++)
        {
            nowy.tablica[i] = this->tablica[i] / a;
        }
        return nowy;
    }

    WektorD operator- (WektorD &w){
        int min = w.rozmiar;
        if (rozmiar < min) min = rozmiar;

        WektorD nowy(min);
        for (int i = 0; i < min; i++)
        {
            nowy.tablica[i] = this->tablica[i] - w.tablica[i];
        }
        return nowy;

    }

    WektorD operator=(WektorD &w){
        WektorD nowy(w);
        return nowy;
    }

    ~WektorD(){
        //delete[] tablica;
    
    }

    friend ostream& operator<<(ostream& ob, const WektorD& wek);
};

ostream& operator<<(ostream& ob, const WektorD& wek){
    ob << endl << "ELEMENTY WEKTORA " << endl;
    for (int i = 0; i < wek.rozmiar; i++)
        ob << wek.tablica[i] << ", ";
    return ob;

}

class WektorS
{
public:
    int rozmiar = 5;
    int tablica[5];


    WektorS operator+ (WektorS &w){
        WektorS nowy;
        for (int i = 0; i < rozmiar; i++)
        {
            nowy.tablica[i] = this->tablica[i] + w.tablica[i];
        }
        return nowy;
    }

    WektorS operator* (int a){
        WektorS nowy;
        for (int i = 0; i < rozmiar; i++)
        {
            nowy.tablica[i] = this->tablica[i] * a;
        }
        return nowy;
    }

    WektorS operator/ (int a){
        WektorS nowy;
        for (int i = 0; i < rozmiar; i++)
        {
            nowy.tablica[i] = this->tablica[i] / a;
        }
        return nowy;
    }

    WektorS operator- (WektorS &w){
        WektorS nowy;
        for (int i = 0; i < rozmiar; i++)
        {
            nowy.tablica[i] = this->tablica[i] - w.tablica[i];
        }
        return nowy;

    }
    
    friend ostream& operator<<(ostream& ob, const WektorS& wek);

    
};


ostream& operator<<(ostream& ob, const WektorS& wek){
    ob << endl << "ELEMENTY WEKTORA " << endl;
    for (int i = 0; i < wek.rozmiar; i++)
        ob << wek.tablica[i] << ", ";
    return ob;

}

int main()
{
    WektorS s1;
    s1.tablica[0] = 1;
    s1.tablica[1] = 2;
    s1.tablica[2] = 3;
    s1.tablica[3] = 4;
    s1.tablica[4] = 5;

    WektorS s2;
    s2.tablica[0] = 7;
    s2.tablica[1] = 7;
    s2.tablica[2] = 7;
    s2.tablica[3] = 7;
    s2.tablica[4] = 7;

    WektorS s3 = s1 + s2*2;
    cout << "S3[0]= " << s3.tablica[0] << endl;
    cout << s1 << endl;

    ///

    WektorD d1(3);
    d1.tablica[0] = 4;
    d1.tablica[1] = 4;
    d1.tablica[2] = 7;

    
    WektorD d2 = d1;
    cout << "D1[0]= " <<  d1.tablica[0] << endl;
    int i;
    cin >> i;
}

 

ale nie działa to za dobrze, próbowałem to poprawić, ale nie bardzo mi wychodzi. Proszę o pomoc.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...