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

Wstęp do programowanie obiektowego - moja pierwsza klasa

42 Warsaw Coding Academy
+1 głos
271 wizyt
pytanie zadane 20 października 2023 w C i C++ przez hutsalo1998 Użytkownik (540 p.)

Uczę się podstaw programowania obiektowego i mam zadanie do wykonania. Jego treść brzmi tak:

 

Wzorując się na klasie liczb zespolonych zespol , będącej
przedmiotem prezentacji multimedialnej zdefiniuj w ciele lub
poza ciałem przedstawionej poniżej klasy wektor jej metody.

Klasa wektor wygląda tak:

class wektor{
    string nazwaWektora;
    double x, y, z;
public:
    wektor(double = 0., double = 0.,
              double = 0., string = "");
    wektor operator+(wektor w);
    wektor operator*(wektor w);
    double getX();
    double getY();
    double getZ();
    string getNazwa();
};


Starałem się odwzorować tę klase wektor na podstawie klasy zespol z tego filmu https://www.youtube.com/watch?v=KgFvWujIRqA . Finalnie to wyszło tak:

#include <iostream>
using namespace std;

class wektor{
double x, y, z;
public:
wektor(double X = 0., double Y = 0., double Z = 0.){
      X = x;
      Y = y;
      Z = z;
    }
    double getX(){return x;}
    double getY(){return y;}
    double getZ(){return z;}
};

ostream& operator<<(ostream& strumien, wektor& w){
    strumien << "(" << w.getX() << ", " << w.getY() << ", " << w.getZ() << ")";
    return strumien;
}

wektor w1;

int main(){
    wektor w1(1., 0.);
    cout << "w1 = " << w1 << endl;

    return 0;
}

ale efekt finalny jest inny od zamierzonego. Program co prawda działą i sie normalnie kompiluje ale dane wyjściowe są inne niż powinny. Dostaje coś takiego:

Czy ktoś wie gdzie tkwi problem, i jak go mogę rozwiązać?

 

1 odpowiedź

+1 głos
odpowiedź 20 października 2023 przez j23 Mędrzec (195,240 p.)
      X = x;
      Y = y;
      Z = z;

Pewny jesteś tego?

1
komentarz 20 października 2023 przez hutsalo1998 Użytkownik (540 p.)
Dlaczego? Tak na dobrą sprawe to dopiero zaczynam jak idzie o obiektówke i c++, więc chętnie posłucham dobrych rad. Sądziłem, że te zmienne powinny tam być. Chodzi o nazewnictwo czy o to, że nie powinno ich tam być? Jak inaczej mogę to zapisać?
komentarz 20 października 2023 przez j23 Mędrzec (195,240 p.)

Przeanalizuj, co przypisujesz do czego:

wektor(double X, double Y, double Z) {
    X = x;
    Y = y;
    Z = z;
}

 

komentarz 20 października 2023 przez hutsalo1998 Użytkownik (540 p.)

W porządku dziękuje. Już działa. Tylko takie pytanie na koniec mam jeszcze. Bo tutaj w tym fragmencie kodu:

class wektor{
    string nazwaWektora;
    double x, y, z;
public:
    wektor(double = 0., double = 0.,
              double = 0., string = "");
    wektor operator+(wektor w);
    wektor operator*(wektor w);
    double getX();
    double getY();
    double getZ();
    string getNazwa();
};

jest na końcu:

string getNazwa();

Czy skoro mi zatrybiło to już to muszę dodawać tą linijke czy jest to w tym momencie opcjonalne?

komentarz 21 października 2023 przez j23 Mędrzec (195,240 p.)

Jeśli getNazwa jest częścią zadania, to powinieneś zostawić tę metodę, a jeśli nie jest, to nie ma potrzeby, by ta metoda tam była.

komentarz 21 października 2023 przez hutsalo1998 Użytkownik (540 p.)
Dzięki

Podobne pytania

0 głosów
0 odpowiedzi 353 wizyt
0 głosów
1 odpowiedź 2,271 wizyt
pytanie zadane 17 maja 2020 w C i C++ przez Dynamic Bywalec (2,910 p.)
+1 głos
1 odpowiedź 458 wizyt

93,379 zapytań

142,380 odpowiedzi

322,533 komentarzy

62,734 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...