Liczenie objętości ostrosłupa

0

witam mam na zadanie stworzyć program który obliczy obj ostrosłupa jednak gdy go odpalę to zawsze jest wynik 0 co robię źle?



#include <iostream>

using namespace std;


int main() 
{
	float a, b, h, v, p;
	
	cout<<"program liczy objetosc ostroslupa o podstawie prostokatnej. \n";
	cout<<"podaj dlugosc dluzszego boku podstawy \n";
	cin>>a;
	cout<<"podaj dlugosc krotszego boku podstawy \n";
	cin>>b;
	p = a*b;
	cout<<"podaj wysokosc \n";
	cin>>h;
	v = 1/3*p*h;
	cout<<"obj wynosi \n";
	cout<<v;
	
	return 0;
}
6

Ponieważ: 1/3==0
Użyj: v = a*b*h/3;

1

Ewentualnie daj 1.0F/3.0F (to F tylko po to, żeby GCC się nie wymądrzał).

4
Manna5 napisał(a):

Ewentualnie daj 1.0F/3.0F (to F tylko po to, żeby GCC się nie wymądrzał).

To tylko ty się tu wymądrzasz, kompilatory zaś działają zgodnie ze standardem.
Tak a propos nie polecam tego rozwiązania, ponieważ jak zdecydujesz się na zmianę float na double lub long double to rozwiązanie

  • double a,b,h; ... double v = a*b*h/3; zadziała już z lepszą precyzją
  • double a,b,h; ... double v = 1F/3F*a*b*h; nadal będzie miało słabą precyzje
    Dopóki nie zauważysz tych F i nie zmienisz te F na . dla double lub na LF dla long double
0

Ze standardami się nie dyskutuje, ale zastanawiam się dlaczego
Niklaus Wirth w Pascalu wymyślił że 1/3 = 0.(3) a
Dennis Ritchie w C ustalił że 1/3 = 0

0

A gdyby rozszerzyć zadanie do narysowania jeszcze tego ostrosłupa (pomijając algorytm skalowania wymiary rzeczywiste -ekran) to jakie środowisko z użyciem C++ było by najwygodniejsze? (najszybciej zainicjowany tryb graficzny, przyjazna forma z przybornikiem, proste instrukcje wykreślania etc.) Dla mnie naturalnie to C++ Builder i Visual C++, ale to już wypaczenie/przyzwyczajenie. Co jeszcze można polecić jako "łatwe i przyjemne" przy wykreślaniu wszelkiej geometrii, matematyki przestrzennej, fraktali, etc, gdzie językiem przypisania i wzorów będzie C++.?.

0
davout napisał(a):

A gdyby rozszerzyć zadanie do narysowania jeszcze tego ostrosłupa (pomijając algorytm skalowania wymiary rzeczywiste -ekran) to jakie środowisko z użyciem C++ było by najwygodniejsze?

https://ch.mathworks.com/products/matlab/matlab-and-c.html

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