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

C++ Blad w kompilacji. Pomocy

Cloud VPS
+1 głos
265 wizyt
pytanie zadane 16 grudnia 2015 w C i C++ przez selekcik Nowicjusz (130 p.)
Witam

Chcialbym aby ktos pomogl mi znalezc blad ktory nie pozwala skompilowac programu. Przepisalem go podczas zajec ale cos jest nie tak. Z gory dziekuje

#include <iostream>
#include <math.h>

using namespace std;

// 1)
class Punkt {
    private:
    int x;
    int y;
    
    public:
    int wezX() {
        return this.x;
    }    
    
    int wezY() {
        return this.y;
    }
    
    Punkt() {
        this.x = 0;
        this.y = 0;
    }
    
    Punkt(int pX, int pY) {
        x = pX;
        y = pY;
    }
}

// 0)
class Figura {
    private:
    int iloscWierzcholkow;
    Punkt* wspolrzedneWierzcholkow;
    
    public:
    int wezIloscWierzcholkow    () {
        return this.iloscWierzcholkow;    
    }
    
    int wezWspolrzedneWierzcholkow() {
        return this.wspolrzedneWierzcholkow;
    }
    
    void ustawIloscWierzcholkow(int iloscWierzcholkow) {
        this.iloscWierzcholkow = iloscWierzcholkow;
    }
    
    void ustawWspolrzedneWierzcholkow(Punkt* wspolrzedneWierzcholkow) {
        this.wspolrzedneWierzcholkow = wspolrzedneWierzcholkow;
    }
    
    virtual double liczPole();
    
    Figura(int iloscWierzcholkow) {
        this.iloscWierzcholkow = iloscWierzcholkow;
        this.wspolrzedneWierzcholkow = new Punkt[this.iloscWierzcholkow];
    }
    
    protected:
    double liczDlugoscBoku(Punkt a, Punkt b) {
        return = sqrt(pow(b.wezX - a.wezX, 2) + pow(b.wezY - a.wezY, 2));
    }
}

// 2)
class Trojkat : Figura {
    
    public:
    double liczPole() {
        int dlugoscA = liczDlugoscBoku(this.wezWspolrzedneWierzcholkow[0], this.wezWspolrzedneWierzcholkow[1]);
        int dlugoscB = liczDlugoscBoku(this.wezWspolrzedneWierzcholkow[1], this.wezWspolrzedneWierzcholkow[2]);
        int dlugoscC = liczDlugoscBoku(this.wezWspolrzedneWierzcholkow[2], this.wezWspolrzedneWierzcholkow[0]);
        
        if (czyTrojkat(dlugoscA, dlugoscB, dlugoscC)) return 0;
        
        double p = (dlugoscA + dlugoscB + dlugoscC)/2;
        double s = sqrt(p*(p - dlugoscA) * p*(p  - dlugoscB) * p*(p - dlugoscA));
        
        return s;
    }
    
    private:
    bool czyTrojkat(double a, double b, double c) {        
        return ((a + b) > c && (b + c) > a && (c + a) > b);
    }
}

int main() {
    int aX, aY, bX, bY, cX, cY;
    
    cout << "Wprowadz wspolrzedne punktu A: ";
    cin >> aX >> aY;
    
    cout << "Wprowadz wspolrzedne punktu B: ";
    cin >> bX >> bY;
    
    cout << "Wprowadz wspolrzedne punktu C: ";
    cin >> cX >> cY;    
    
    Figura figura = new Figura(new Punkt(aX, aY), new Punkt(bX, bY), new Punkt(cX, cY));
    
    double pole = figura.liczPole();
    if (pole == 0) {
        cout << "Trojkat o podanych wspolrzednych nie istnieje";        
    } else {
        cout << "Pole trojkata wynosi: " << pole;
    }
}

2 odpowiedzi

+1 głos
odpowiedź 16 grudnia 2015 przez MetGang Nałogowiec (34,360 p.)

Po this jest -> a nie . (this jest wskaźnikiem na obecny obiekt). W dodatku WezX jest funkcją, więc jej wywołanie ma formę WezX(). Jeśli masz zmienną double to dziel przez 2.0 zamiast 2 (kompilator może zinterpretować 2 jako inta i przeprowadzić niepotrzebną konwersję), lub mnożyć przez 0.5 (niekiedy szybsze).

+1 głos
odpowiedź 16 grudnia 2015 przez Gariw Użytkownik (920 p.)

Klasy kończy się średnikiem i nie możesz metodzie, która ma zwracać int dać return na obiekt.

  int wezWspolrzedneWierzcholkow() {
        return this.wspolrzedneWierzcholkow;
    }

Tak jak tu.

Podobne pytania

0 głosów
2 odpowiedzi 219 wizyt
pytanie zadane 3 września 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 254 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez lukasz_m Obywatel (1,380 p.)
–2 głosów
1 odpowiedź 218 wizyt
pytanie zadane 28 października 2015 w C i C++ przez Dayner Nowicjusz (120 p.)

93,485 zapytań

142,417 odpowiedzi

322,765 komentarzy

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

Kursy INF.02 i INF.03
...