Помогите реализовать реализовать математическую функцию acos
Есть подозрение что я не правильно работаю с указателями.Если можно подправте=)
Вот что я набросал.
Код:
#include <iostream>
#include <locale>
#include <math.h>
using namespace std;
class Triangle //класс треугольник
{
public:
void get(); //пользователь задает размер сторон
void angle_a(); //ищем угол а
void angle_b(); //ищем угол b
void angle_c(); //ищем угол c
void perimeter(); //находим периметр
private:
};
void Triangle::get()
{
int *a = new int;
int *b = new int;
int *c = new int;
cout << "введите сторону a" << "n";
cin >> *a;
cout << "введите сторону b" << "n";
cin >> *b;
cout << "введите сторону c" << "n";
cin >> *c;
}
void Triangle::perimeter()
{
int *a ;
int *b ;
int *c ;
int sum;
sum=*a+*b+*c;
cout << "Периметр равен: " << sum << endl;
}
void Triangle::angle_a()
{
int alpha;
int *a ;
int *b ;
int *c ;
alpha=acos();//как правильно записать уравнение если arccos=((b^2+c^2-a^2)/2*b*c)
cout << "Угол a = " << alpha << endl;
}
void Triangle::angle_b()
{
}
void Triangle::angle_c()
{
}
int main()
{
Triangle objTriangle;
objTriangle.get();
objTriangle.perimeter();
objTriangle.angle_a();
system("pause");
return 0;
}
#include <locale>
#include <math.h>
using namespace std;
class Triangle //класс треугольник
{
public:
void get(); //пользователь задает размер сторон
void angle_a(); //ищем угол а
void angle_b(); //ищем угол b
void angle_c(); //ищем угол c
void perimeter(); //находим периметр
private:
};
void Triangle::get()
{
int *a = new int;
int *b = new int;
int *c = new int;
cout << "введите сторону a" << "n";
cin >> *a;
cout << "введите сторону b" << "n";
cin >> *b;
cout << "введите сторону c" << "n";
cin >> *c;
}
void Triangle::perimeter()
{
int *a ;
int *b ;
int *c ;
int sum;
sum=*a+*b+*c;
cout << "Периметр равен: " << sum << endl;
}
void Triangle::angle_a()
{
int alpha;
int *a ;
int *b ;
int *c ;
alpha=acos();//как правильно записать уравнение если arccos=((b^2+c^2-a^2)/2*b*c)
cout << "Угол a = " << alpha << endl;
}
void Triangle::angle_b()
{
}
void Triangle::angle_c()
{
}
int main()
{
Triangle objTriangle;
objTriangle.get();
objTriangle.perimeter();
objTriangle.angle_a();
system("pause");
return 0;
}
Вот класс без указателей и в double стороны мне кажется лучше:
Код:
class Triangle { //класс треугольник
public:
void get(); //пользователь задает размер сторон
void angle_a(); //ищем угол а
void angle_b(); //ищем угол b
void angle_c(); //ищем угол c
void perimeter(); //находим периметр
private:
double a, b, c;
};
void Triangle::get() {
cout << "введите сторону a" << "n";
cin >> a;
cout << "введите сторону b" << "n";
cin >> b;
cout << "введите сторону c" << "n";
cin >> c;
}
void Triangle::perimeter() {
cout << "Периметр равен: " << a+b+c << endl;
}
void Triangle::angle_a() {
double a_angle = acos((b*b+c*c-a*a)/(2.0*b*c));
cout << "Угол a = " << a_angle << " радиан\n";
}
void Triangle::angle_b() {
double b_angle = acos((a*a+c*c-b*b)/(2.0*a*c));
cout << "Угол b = " << b_angle << " радиан\n";
}
void Triangle::angle_c() {
double c_angle = acos((a*a+b*b-c*c)/(2.0*a*b));
cout << "Угол c = " << c_angle << " радиан\n";
}
public:
void get(); //пользователь задает размер сторон
void angle_a(); //ищем угол а
void angle_b(); //ищем угол b
void angle_c(); //ищем угол c
void perimeter(); //находим периметр
private:
double a, b, c;
};
void Triangle::get() {
cout << "введите сторону a" << "n";
cin >> a;
cout << "введите сторону b" << "n";
cin >> b;
cout << "введите сторону c" << "n";
cin >> c;
}
void Triangle::perimeter() {
cout << "Периметр равен: " << a+b+c << endl;
}
void Triangle::angle_a() {
double a_angle = acos((b*b+c*c-a*a)/(2.0*b*c));
cout << "Угол a = " << a_angle << " радиан\n";
}
void Triangle::angle_b() {
double b_angle = acos((a*a+c*c-b*b)/(2.0*a*c));
cout << "Угол b = " << b_angle << " радиан\n";
}
void Triangle::angle_c() {
double c_angle = acos((a*a+b*b-c*c)/(2.0*a*b));
cout << "Угол c = " << c_angle << " радиан\n";
}
Код:
int *a = new int;
int *b = new int;
int *c = new int;
int *b = new int;
int *c = new int;
2) стороны не физичны (отрицательные, нулевые и в общем случае не образуют треугольник).
Ну, и наконец - словом get метод установки значений называть - это нонсенс. Запомните set - установить, get - получить. У вас get в роли set.
Цитата: sadovoya
По-нормальному, тут еще надо предусмотреть две ситуации: 1)пользователь забыл вызвать метод get() до вызова других методов (т.е. стороны не введены);
2) стороны не физичны (отрицательные, нулевые и в общем случае не образуют треугольник).
Ну, и наконец - словом get метод установки значений называть - это нонсенс. Запомните set - установить, get - получить. У вас get в роли set.
2) стороны не физичны (отрицательные, нулевые и в общем случае не образуют треугольник).
Ну, и наконец - словом get метод установки значений называть - это нонсенс. Запомните set - установить, get - получить. У вас get в роли set.
Спасибо учту.=)