[c++] klasy do obsługi stożka,kuli,walca

0

Witam,
miałem za zadanie napisać klasy do obsługi stożka kuli i walca..
ale nie wiem czy wypada oddać taki kod. Prosiłbym o ewentualną krytykę, ale bez przesady typu : Chyba ocipiałeś, albo wróć do podstawówki:)

#include <iostream>
#define PI 3.141592653589793
using namespace std;
class Figura
{
protected:
    double h;
    double r;
	double d;
	double Potega(double a,double n)
    {
        double x=a;
        for(int i=0;i<n;i++)
            x *= a;
        return x;
    }
    double Pierwiastek(double a)
    {
        double z = 0;
        double x = a/2;
        do
        {
            z=x;
            x= 0.5 * (x + a/x);
        }
        while (x != z);
        return x;
    }
};
class Stozek:protected Figura
{
public:
    double Tworzaca()
    {
        return Pierwiastek( Potega(h,2) * Potega(r,2) );
    }
    double Podstawa()
    {
        return PI*Potega(r,2);
    }
    double PowBoczna()
    {
        return PI*Tworzaca()*r;
    }
    double PowCal()
    {
        return PowBoczna()+Podstawa();
    }
    double Objetosc()
    {
            return (Podstawa()*h)/3;
    }
};
class Walec :protected Figura
{
public:
    double Podstawa()
    {
            return PI*Potega(r,2);
    }
    double PowBoczna()
    {
        return 2*PI*h*r;
    }
    double PowCalkowita()
    {
        return (2*Podstawa())+PowBoczna();
    }
    double Objetosc()
    {
            return PI*Potega(r,2)*h;
    }
};
class Kula:protected Figura
{
public:
	
	double Objetosc()
	{
		return (4/3)*PI*Potega(r,3);
	}
	double PowCalkowita()
	{
		return 4*PI*Potega(r,2); 
	}
};

0

Co rozumiesz przez "obsługę" stożka walca i kuli? Wyliczanie ich paramtrów, obsługę w przestrzeni, obliczanie przecięć?

0

trudno mi powiedzieć..
Zadanie brzmi:

Stwórz klasy opisujące stożek, walec i kule.

Na początku myślałem, że chodzi tylko o wyliczanie ich parametrów, ale twój post dał mi troche do myślenia..

0

więc poza PI co byście zmienili??
Ciężko mi sie ustosunkować do mojego kodu.. Zaraz chyba go wyślę w cholerę i zobaczę co powie wykładowca..

0

Wywalił funkcję Potega() oraz Pierwiastek() i jeśli trzeba używał funkcji pow() oraz sqrt(), ale w tym przypadku nie potrzebujesz potęgowania do 2.15695745 potęgi, więc wystarczy zwykłe x*x*x.
Zmienił konwencję nazewniczą (tak tylko stylistycznie) albo na Javową czyli NazwaKlasy.nazwaMetody(), lub na podobną do Ruby NazwaKlasy.nazwa_metody().
(4/3)*PI*Potega(r,3); to bynajmniej nie zwróci poprawnego wyniku, zamień na 4.0*PI*r*r*r/3.0;.
Do klasy figura dodaj 2 czysto wirtualne metody, które będą liczyły powierzchnię i pole, w ten sposób będzie można przechowywać figury w jednym kontenerze i będzie można w miarę normalnie z nich korzystać.
Taka kolejna rada stylistyczna, ja uważam, że lepiej wywoływać metody swojej klasy poprzez jawne wywołanie z this.

1 użytkowników online, w tym zalogowanych: 0, gości: 1