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

Tworzenie metod w klasach

Object Storage Arubacloud
0 głosów
148 wizyt
pytanie zadane 10 grudnia 2018 w C i C++ przez jednooki23 Nowicjusz (120 p.)

Witam , mam takie zadanko:

Zdefiniuj klase TPunkt przedstawiajaca punkt na płaszczyznie. W klasie zdefiniuj metode
Odleglosc, która zwraca odległosc od punktu bedacego parametrem tej metody. Klasa ta nie
posiada konstruktora domyslnego. Pozostałe metody tej klasy okresl samodzielnie.

Do tej pory napisałem tyle i dalej utknąłem, nie mam pomysłu jak zapisać metodę Odległość.

class TPunkt
    {
public:
    float x;
    float y;
        TPunkt()
        {x=0;y=0;}
        
        float getX() const{ return x;}
        float getY() const{ return y;}
        float Odleglosc(const Punkt& b)const;
        };
        float TPunkt::Odleglosc(const Punkt &b) const
        {
            
            return Odleglosc(sqrt(this->point2.getX()-point1.getX())*(this->point2.getX()-point1.getX())+(this->point2.getY()-point1.getY())*(this->point2.getY()-point1.getY());
        }

 

1 odpowiedź

0 głosów
odpowiedź 10 grudnia 2018 przez niezalogowany

Nazwałeś punkt 'b', a próbujesz dostać się do jakichś punktów o nazwach 'point1' czy 'point2'(który dodatkową miałby być polem klasy TPunkt). Nie wiem czemu chcesz wywoływać rekurencyjnie funkcję Odleglosc. Zakładając, że zamiast TPunkt napisałeś Punkt:

float TPunkt::Odleglosc(const TPunkt &b) const 
{
    return std::hypot(this->x - b.x, this->y - b.y);
}
komentarz 10 grudnia 2018 przez jednooki23 Nowicjusz (120 p.)
Zmieniłem to ale nadal nie mogę obliczyć odległości, tworząc obiekt p1,p2 klasy TPunkt i używając metody odległość
komentarz 10 grudnia 2018 przez niezalogowany
Pokaż kod gdzie używasz tej metody. Określ co dokładnie znaczy, że nie możesz. Wyskakuje jakiś błąd?
komentarz 10 grudnia 2018 przez jednooki23 Nowicjusz (120 p.)
#include <iostream>
#include <cstdlib>
#include <string>

#include <math.h>

using namespace std;

class TPunkt
    {
public:
    float x;
    float y;
        TPunkt()
        {x=0;y=0;}
        TPunkt(float,float);
        TPunkt(const TPunkt &b)
        {
            x=b.x;
            y=b.y;
        }
        float getX() const{ return x;}
        float getY() const{ return y;}
        float Odleglosc(const TPunkt& b)const;
        };
        float TPunkt::Odleglosc(const TPunkt &b) const
        {
            return hypot(this->x - b.x, this->y - b.y);
        }





main()
{
    TPunkt p1(1,1),p2(0,3);
    float Odleglosc(p1,p2);
    return 0;
}

Wyskakują mi takie błędy:

||=== Build: Debug in dziedziczeniezad1 (compiler: GNU GCC Compiler) ===|
C:\Users\Piotrek\Desktop\19.11.2018\dziedziczeniezad1\main.cpp||In function 'int main()':|
C:\Users\Piotrek\Desktop\19.11.2018\dziedziczeniezad1\main.cpp|38|error: expression list treated as compound expression in initializer [-fpermissive]|
C:\Users\Piotrek\Desktop\19.11.2018\dziedziczeniezad1\main.cpp|38|warning: left operand of comma operator has no effect [-Wunused-value]|
C:\Users\Piotrek\Desktop\19.11.2018\dziedziczeniezad1\main.cpp|38|error: cannot convert 'TPunkt' to 'float' in initialization|
C:\Users\Piotrek\Desktop\19.11.2018\dziedziczeniezad1\main.cpp|38|warning: unused variable 'Odleglosc' [-Wunused-variable]|
||=== Build failed: 2 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|

 

komentarz 10 grudnia 2018 przez niezalogowany
  1. Zacznij od nauczenia się jak używać metod.
  2. Wywołujesz konstruktor, którego jeszcze nie zaimplementowałeś.
komentarz 10 grudnia 2018 przez jednooki23 Nowicjusz (120 p.)
Właśnie próbuję się tego nauczyć ale nie do końca to rozumiem. Czyli muszę dodatkowo zrobić jeszcze jeden konstruktor aby mi wyliczało odległość?
komentarz 10 grudnia 2018 przez niezalogowany

Żeby w ogóle stworzyć punkt. Dalej wystarczy jak wygoglujesz jak użyć metod, bo na pewno nie tak:

float Odleglosc(p1,p2);
komentarz 15 grudnia 2018 przez jednooki23 Nowicjusz (120 p.)

Poprawiłem już trochę kod ale nadal nie umiem wyliczyć tej odległości. Pomoże ktoś?

#include <iostream>
#include <cstdlib>
#include <string>

#include <math.h>

using namespace std;

class TPunkt
    {

    public:
    TPunkt ();
    TPunkt(float ,float );

    float getX();
    float getY();
    void setX(float x);
    void setY(float y);

    void Odleglosc(const TPunkt &b);
    float Odleglosc(const TPunkt &b) const;
    void Wyswietl();
protected:
    float x;
    float y;
    };
    TPunkt::TPunkt()
{
    x=0;
    y=0;
}

TPunkt::TPunkt(float x,float y)
{
    this->x = x;
    this->y = y;
}

float TPunkt::getX()
{
    return x;
}

float TPunkt::getY()
{
    return y;
}

void TPunkt::setX(float x)
{
    this->x = x;
}

void TPunkt::setY(float y)
{
    this->y = y;
}

void TPunkt::Odleglosc(const TPunkt &p)
{
    x = p.x;
    y = p.y;
}

float TPunkt::Odleglosc(const TPunkt &p) const
{
    return hypot(this->x - p.x, this->y - p.y);
}
main ()
{
TPunkt p1(1,1);
    TPunkt p2(0,3);

return 0;
}

 

Podobne pytania

+2 głosów
2 odpowiedzi 398 wizyt
pytanie zadane 14 października 2019 w JavaScript przez Falwack Początkujący (400 p.)
+2 głosów
1 odpowiedź 369 wizyt
pytanie zadane 20 czerwca 2016 w C i C++ przez JAKUBW Nałogowiec (33,470 p.)
0 głosów
1 odpowiedź 310 wizyt

92,570 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 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!

...