Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите реализовать реализовать математическую функцию acos

61K
04 января 2015 года
Максим Тесля
13 / / 10.12.2014
Мне нужно найти углы треугольника за данными 3-ма сторонами.
Есть подозрение что я не правильно работаю с указателями.Если можно подправте=)
Вот что я набросал.

Код:
#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;
}
326
04 января 2015 года
sadovoya
757 / / 19.11.2005
Вы же нигде не сохранили стороны, они локальные в методах и пропадают сразу при выходе из них. Мало того они разные в каждом методе, хоть и называются одинаково (область видимости у них функция-метод). Делайте их приватными переменными в классе. Указатели зачем вам вообще? Тем более их уничтожать положено..

Вот класс без указателей и в 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";

}
Углы в радианах считает. Чтобы в градусы перевести, если это надо, то домножить надо на 180/пи
1.8K
04 января 2015 года
Kuzya
184 / / 19.03.2008
ну как минимум это должно быть в private:

 
Код:
int *a = new int;
    int *b = new int;
    int *c = new int;
Так же в привате нужно объявить переменные отноящиеся к другим величинам треугольника
326
04 января 2015 года
sadovoya
757 / / 19.11.2005
По-нормальному, тут еще надо предусмотреть две ситуации: 1)пользователь забыл вызвать метод get() до вызова других методов (т.е. стороны не введены);
2) стороны не физичны (отрицательные, нулевые и в общем случае не образуют треугольник).

Ну, и наконец - словом get метод установки значений называть - это нонсенс. Запомните set - установить, get - получить. У вас get в роли set.
61K
04 января 2015 года
Максим Тесля
13 / / 10.12.2014
Цитата: sadovoya
По-нормальному, тут еще надо предусмотреть две ситуации: 1)пользователь забыл вызвать метод get() до вызова других методов (т.е. стороны не введены);
2) стороны не физичны (отрицательные, нулевые и в общем случае не образуют треугольник).

Ну, и наконец - словом get метод установки значений называть - это нонсенс. Запомните set - установить, get - получить. У вас get в роли set.


Спасибо учту.=)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог