Форум программистов, компьютерный форум CyberForum.ru

Создать класс Angle для работы с углами - C++

Восстановить пароль Регистрация
 
nekit064
0 / 0 / 0
Регистрация: 06.06.2013
Сообщений: 3
06.06.2013, 22:37     Создать класс Angle для работы с углами #1
Здравствуйте, Создать класс Angle для работы с углами на плоскости, задаваемыми величинами в градусах и минутах. Обязательно должны быть реализованы: перевод в радианы, приведение к диапазону 0-360, увеличение и уменьшение угла на заданную величину, получение синуса, сравнение углов.

Код в принципе есть(нашел на этом же форуме, более менее разобрался), но нужно все сделать в с++ Builder и ввод с клавиатуры и вывод на на форму. подскажите как это сделать.

Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
#define M_PI       3.14159
#pragma pack()
 
using namespace std;
 
class Angle
{
private:
    int _gradusy, _minute;
 
public:
    Angle (int gradusy, int minute)
        : _gradusy (gradusy),_minute(minute){}
 
    Angle ()
        : _gradusy (0),_minute(0){}
    
    ~Angle (){}
 
    int getGradusy() {return _gradusy;}
    int getMinute() {return _minute;}
 
    void removeRoughs()
    {   _minute += _gradusy*60;
        _gradusy = _minute/60;
        _minute = _minute%60;
    }
    
    void setAngle()
    {  
        cout<<"Градусов = ";
        cin>>_gradusy;
        cout<<"Минут = ";
        cin>>_minute;
        this->removeRoughs();
    }
 
    void increaseAngle()
    {   Angle a;
        a.setAngle();
        _gradusy += a.getGradusy();
        _minute += a.getMinute();
        this->removeRoughs();
    }
 
    void decreaseAngle()
    {   Angle a;
        a.setAngle();
        _gradusy -= a.getGradusy();
        _minute -= a.getMinute();
        this->removeRoughs();
    }   
 
    double getRadians()
    {   return (_gradusy+_minute/60.)*M_PI/180.;
    }
 
    void intoRange()
    {   if(_minute<0)
        {   _gradusy--;
            _minute += 60;
        }
        if(_gradusy>0)_gradusy = _gradusy%360;
        else _gradusy = _gradusy%360+360;
    }
 
    double sinA()
    {   return sin(this->getRadians());
    }
 
    friend int angleCmp(Angle &a1, Angle &a2)
    {   int m1 = a1.getMinute()+a1.getGradusy()*60;
        int m2 = a2.getMinute()+a2.getGradusy()*60;
        if(m1<m2) return -1;
            else if(m1>m2) return 1;
                else return 0;
    }
};
 
 
int main ()
{setlocale (LC_ALL, "Russian");
int A;           // переменная для подсчета объема памяти класса
    //значение по умолчанию для угла d1
    Angle d1;
    cout<<"Первоначальное значение для угла d1:"; 
    cout<<"\nГрадусов = "<<d1.getGradusy()<<"\nМинут = "<<d1.getMinute()<<"\n";
 
    //значение по умолчанию для угла d2
    Angle d2;
    cout<<"\nПервоначальное значение для d2:"; 
    cout<<"\nГрадусов = "<<d2.getGradusy()<<" \nМинут =  "<<d2.getMinute()<<"\n";
 
    // изменение объекта, метод setAngle()
    cout<<"------------------------------------------";
    cout<<"\nВведите новое значение для угла d1\n";
    d1.setAngle();
    cout<<"\nугол d1 стал равен \nГрадусов = "<<d1.getGradusy()<<"\nМинут = "<<d1.getMinute()<<"\n";
 
    // изменение объекта, метод setAngle()
    cout<<"\nВведите новое значение для угла d2\n";
    d2.setAngle();
    cout<<"\nугол d2 стал равен \nГрадусов =  "<<d2.getGradusy()<<"\nМинут = "<<d2.getMinute()<<"\n";
 
    //увеличения угла на заданную величину, метод increaseAngle()
    cout<<"------------------------------------------";
    cout<<"\nДобавить значение в угол d1\n";
    d1.increaseAngle();
    cout<<"\nугол d1 стал равен \nГрадусов = "<<d1.getGradusy()<<"\nМинут = "<<d1.getMinute()<<"\n";
 
    // уменьшение угла на заданную величину, метод decreaseAngle()
    cout<<"\nМинус значение для угла d1\n";
    d1.decreaseAngle();
    cout<<"\nугол d1 стал равен \nГрадусов = "<<d1.getGradusy()<<"\nМинут = "<<d1.getMinute()<<"\n";
 
    //перевод в радианы, метод getRadians()
 
    cout<<"\n угол d1 в радианах = "<<d1.getRadians();
    cout<<"\n угол d2 в радианах = "<<d2.getRadians();
 
    //приведение к диапазону 0-360, метод intoRange()
    cout<<"\n------------------------------------------";
    cout<<"\nПриведение угла d3 к диапазону <0 - 360>\n";
    Angle d3;
    d3.setAngle();
    d3.intoRange();
    cout<<"\nугол d3 в диапазоне <0-360>  "<<"\nГрадусов = "<<d3.getGradusy()<<"\nМинут = "<<d3.getMinute()<<"\n";
 
    //синус, метод sinA()
    cout<<"\n------------------------------------------";
    cout<<"\nСинусы для углов d1, d2, d3\n";
    cout<<"синус угла d1 = "<<d1.sinA()<<"\n";
    cout<<"синус угла d2 = "<<d2.sinA()<<"\n";
    cout<<"синус угла d3 = "<<d3.sinA()<<"\n";
 
    // сравнение углов d1 и d2
    cout<<"\n------------------------------------------";
    cout<<"\nСравнение углов d1 и d2\n";
    cout<<"угол d1 \nГрадусов = "<<d1.getGradusy()<<" Минут = "<<d1.getMinute()<<"\n";
    cout<<"угол d2 \nГрадусов = "<<d2.getGradusy()<<" Минут = "<<d2.getMinute()<<"\n";
    int res = angleCmp(d1,d2);
    if(res==-1) cout<<"d1 < d2\n";
        else if(res==1) cout<<"d1 > d2\n";
            else cout<<"d1 = d2\n";
 
    cin.get();
    A=sizeof(Angle); // подсчет объема помяти для класса
    cout<<"\n------------------------------------------";
    cout<<"\nРазмер класса Angle в байтах = "<<A; // вывод на экран объема памяти
    _getch();
    return 0;
}


И скажите нужно ли создавать *.h файл?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 22:37     Создать класс Angle для работы с углами
Посмотрите здесь:

C++ ООП. Класс Angle для работы с углами на плоскости.
C++ Создать базовый класс - Array и производный класс - Money для работы денежной суммы
C++ Создать класс для работы с окружностями
C++ Создать класс angle, включающий указанные три поля - проверить правильность кода
Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов C++
создать класс для работы с матрицей C++
C++ Создать класс для работы сo строками
C++ Создать класс для работы с массивами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igor921
Заблокирован
07.06.2013, 00:04     Создать класс Angle для работы с углами #2
По хорошему в АШ файле должна храниться структура класса.
ЧТо не получается в работе с формой? не знаете куда выводить?
Yandex
Объявления
07.06.2013, 00:04     Создать класс Angle для работы с углами
Ответ Создать тему
Опции темы

Текущее время: 09:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru