Chciałem napisać program, który oblicza mi pole powierzchni ostrosłupa. Niestety wywala mi jakiś błąd i nie wiem dlaczego. Używam Dev-C++, ale w Microsoft Visual Studio 10.0 Express jest to samo. Mój kod jest taki:
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
//
class Prostokat
{
public:
Prostokat(); //konstruktor
int PodajWysokosc();
int PodajSzerokosc();
int Pole();
int Obwod();
void Rysuj();
void UstawWysokosc(int wysokosc);
void UstawSzerokosc(int szerokosc);
int m_Wysokosc;
int m_Szerokosc;
protected:
private:
};
//
class Ostroslup: public Prostokat
{
public:
Ostroslup(); //konstruktor
int PodajWysokoscOstroslupa();
float PolePowierzchni();
float Objetosc();
void UstawWysokoscOstroslupa(int h);
protected:
private:
int m_WysokoscOstroslupa;
};
//
Prostokat::Prostokat()
{
m_Wysokosc=0;
m_Szerokosc=0;
}
int Prostokat::PodajWysokosc()
{
return m_Wysokosc;
}
int Prostokat::PodajSzerokosc()
{
return m_Szerokosc;
}
int Prostokat::Pole()
{
return m_Szerokosc*m_Wysokosc;
}
int Prostokat::Obwod()
{
return 2*m_Szerokosc+2*m_Wysokosc;
}
void Prostokat::Rysuj()
{
for (int i=0;i<m_Wysokosc;i++)
{
for (int j=0;j<m_Szerokosc;j++)
cout<<"*";
cout<<"\n";
}
}
void Prostokat::UstawWysokosc(int wysokosc)
{
m_Wysokosc=wysokosc;
}
void Prostokat::UstawSzerokosc(int szerokosc)
{
m_Szerokosc=szerokosc;
}
//
Ostroslup::Ostroslup()
{
m_WysokoscOstroslupa=0;
}
int Ostroslup::PodajWysokoscOstroslupa()
{
return m_WysokoscOstroslupa;
}
float Ostroslup::PolePowierzchni()
{
return
m_Wysokosc*m_Szerokosc*m_Wysokosc*sqrt(pow(m_WysokoscOstroslupa,2)+1/4*pow(m_Szerokosc,2))+m_Szerokosc*sqrt(pow(m_WysokoscOstroslupa,2)+1/4*pow(m_Wysokosc,2));
}
//
int main(int argc, char *argv[])
{ Prostokat prost;
Ostroslup o;
prost.UstawWysokosc(3);
prost.UstawSzerokosc(5);
o.UstawWysokoscOstroslupa(6);
o.UstawSzerokosc(3);
o.UstawWysokosc(5);
//cout<<o.PodajWysokosc()<<"\n"<<prost.Obwod()<<"\n";
//prost.Rysuj();
cout<<o.PolePowierzchni()<<"\n"<<o.Objetosc()<<"\n";
system("pause");
return 0;
}