Funkcja zamiast liczby zwraca 0.

0

Witam.

Niestety nie mogę dojść czemu funkcja obs zwraca mi 0 zamiast konkretnej liczby. Funkcja ppc działa tak jak należy.

Z góry dziękuje za pomoc.

Kod:

#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
#include <cmath>
using namespace std;

class Stozek
{
	float h, r, l; // h - wysokosc, r - promien podstawy, l - tworzaca

	float oblicz_tworzaca(float h, float r)
	{
		l = sqrt((h*h) + (r*r));
		return l;
	}
public:

	// konstruktor bez parametrow
	Stozek()
	{
		h = 0;
		r = 0;
		l = 0; // na pewno tu?
	}
	// konstruktor z parametrami
	Stozek(float h, float r)
	{
		this->h = h;
		this->r = r;
		this->l = oblicz_tworzaca(h, r);
	}
	// 1 metoda publiczna
	double ppc(float h, float r)
	{
		float l = oblicz_tworzaca(h, r);
		double pp, pb, ppc;
		pp = M_PI*(r*r);
		pb = M_PI*r*l;
		ppc = pp + pb;
		return ppc;
	}
	// 2 metoda publiczna
	double obs(float h, float r)
	{
		double obs = (1 / 3)*(M_PI*((r*r)*h));
		return obs;
	}
};

int main()
{
	float h, r;
	cout << "Podaj wartosc wysokosci H: "; cin >> h;
	cout << "Podaj wartosc promienia podstawy r: "; cin >> r;
	Stozek tmp(h, r);

	cout << "Pole powierzchni calkowitej stozka: " << tmp.ppc(h, r) << endl;
	cout << "Pole objetosci stozka: " << tmp.obs(h, r) << endl; // dlaczego tu wychodzi 0?

	system("pause");
} 
5

1 / 3 dzielisz liczbę całkowitą przez liczbę całkowitą, wynik to 0 (a potem to zero mnożysz przez resztę wyrażenia ;) )

Zamień na 1.0 / 3.

@ temat: zero to też liczba.

0

(1/3)=0 (1.0/3) =0.33

0

Dzięki wielkie, mój błąd. :)

4

Trochę do tematu się czepię ... że co, zero to nie liczba?

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