Napisz program, w którym funkcja main będzie wywoływała funkcje: oblicz objętość kuli, oblicz pole powierzchni stożka, oblicz objętość prostapadloscianu. Każda z funkcji będzie oczekiwała odpowiednich argumentow typu double i zwracała wartość double. Każda z nich będzie rzucała wyjątek w przypadku zerowych lub ujemnych parametrów. Wyjątki będą przechwytywane w funkcji main. Dla każdej funkcji należy stworzyć oddzielny typ wyjątku.
Napisałam taki kod, ale nie działa. Co jest nie tak?
#include<iostream>
using namespace std;
struct Blad_obliczeniowy
{
string opis_bledu;
};
double policz_objetosc_kuli(double promien);
double policz_objetosc_prostopadloscianu(double dlugosc, double szerokosc, double wysokosc);
double policz_pole_stozka(double promien, double wysokosc);
int main()
{
int objetosc_kuli;
int pole_stozka;
int objetosc_prostopadloscianu;
double r;
cout << "podaj promien kuli: ";
cin >> r;
double t;
cout << "podaj promien podstawy stozka: ";
cin >> t;
double l;
cout << "podaj dlugosc sciany stozka: ";
cin >> l;
double a;
cout << "podaj dlugosc prostopadloscianu: ";
cin >> a;
double b;
cout << "podaj szerokosc prostopadloscianu: ";
cin >> b;
double c;
cout << "podaj wysokosc prostopadloscianu: ";
cin >> c;
try
{
cout << "objetosc kuli o promieniu " << r << ": " << policz_objetosc_kuli(r) << endl;
cout << "pole stozka o promieniu " << t,l << ": " << policz_pole_stozka(t,l) << endl;
cout << "objetosc prostopadloscianu o podstawie " << a,b,c << ": " << policz_objetosc_prostopadloscianu(a,b,c) << endl;
}
catch (Blad_obliczeniowy wyjatek)
{
cout << "przechwycony wyjatek: " << wyjatek.opis_bledu << endl;
}
return 0;
}
double policz_objetosc_kuli(double r)
{
cout << "obliczanie objetosci kuli" << endl;
if (r > 0)
{
return 4/3 * r * r * r * 3.14;
}
else
{
cout << "rzucenie wyjatku!" << endl;
Blad_obliczeniowy blad;
blad.opis_bledu = "zerowy lub ujemny promien kuli!";
throw blad;
}
}
double policz_pole_stozka(double t, double l)
{
cout << "obliczanie objetosci stozka" << endl;
if (t > 0 && l > 0)
{
return 3.14 * t * (t+l);
}
else
{
cout << "rzucenie wyjatku!" << endl;
Blad_obliczeniowy blad;
blad.opis_bledu = "zerowy lub ujemny promien podstawy stozka lub dlugosc sciany!";
throw blad;
}
}
double policz_objetosc_prostopadloscianu(double a, double b, double c)
{
cout << "obliczanie objetosci prostopadloscianu" << endl;
if (a > 0 && b > 0 && c > 0)
{
return a*b*c;
}
else
{
cout << "rzucenie wyjatku!" << endl;
Blad_obliczeniowy blad;
blad.opis_bledu = "zerowy lub ujemna wartosc sciany prostopadloscianu!";
throw blad;
}
}