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

Реализовать класс Triangle ,опираясь на класс Angle для представления углов - C++

Восстановить пароль Регистрация
 
M1XERok
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 1
24.02.2014, 14:49     Реализовать класс Triangle ,опираясь на класс Angle для представления углов #1
Само условие задачи : реализовать класс Triangle ,опираясь на класс Angle для представления углов.
Необходимые действия я сделал. Осталось перегрузить операторов.Оператор << вроде перегрузил .
До остальных не могу додуматься... Может кто-нибудь помочь ?





main.cpp
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
#include <cstdlib>
#include <iostream>
#include "triangle.h"
using namespace std;
 
int main()
{
    triangle t1;
    t1=make_triangle(0,0,0,0,0,0);// альтернативное конструирование
//Пустышка
    cout << "CREATED Triangle "<<endl;
    t1.Display();
//учитывая введеные параметры
    cout << "NEW triangle ^"<<endl;
    t1.Read();
//Проверочка
//    cout << "Triangle now "<<endlж
//    t1.Display();
//вывод по отдельности
    cout << "Type = "<<t1.Type()<<endl;
 
    cout << "Perimeter = "<<t1.Perimeter()<<endl;
 
    cout << "Square = "<<t1.Square()<<endl;
 
    cout << "Hights : "<<t1.Hight()<<endl;
 
    cout<<endl<<endl;
 
    cout<<t1.toString()<<endl<<endl<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
angle.cpp
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
#include <iostream>
#include "angle.h"
#include <string>
#include "math.h"
 
//-------------------------------------------------------------------------------------------
int angle::Input(string way){
    int a;
std::cout<<"If U Want To Write Degrees - Press '0' OR If Minutes - Press '1' : ";
if (way=="First"){
    std::cin>>input_result;
    return input_result;
    }
if (way=="Second"){
    std::cin>>addinput_result;
    return addinput_result;
    }
 
}
//-------------------------------------------------------------------------------------------
void angle::Read(string way){
if (way=="First"){
        if (input_result==0){
        std::cout<<"Write Degrees ";
        std::cin>>degree;
        minute=degree*60;
        };
 
        if (input_result==1){
        std::cout<<"Write Minutes ";
        std::cin>>minute;
        degree=minute/60;
        };
    }
if (way=="Second"){
if (addinput_result==0){
        std::cout<<"Write Degrees ";
        std::cin>>adddegree;
        addminute=adddegree*60;
        };
 
        if (addinput_result==1){
        std::cout<<"Write Minutes ";
        std::cin>>addminute;
        adddegree=addminute/60;
        };
 
}
}
//-------------------------------------------------------------------------------------------
void angle::Display(string way){
    if (way=="First"){
    std::cout<<"Following pimordial values"<<std::endl;
    std::cout<<"Degree = "<<degree<<std::endl;
    std::cout<<"Minute = "<<minute<<std::endl;
    std::cout<<"Radian = "<<radians<<std::endl;
    std::cout<<"Gradus 0-360 = "<<grad360<<std::endl;
    std::cout<<"Sinus = "<<sinus<<std::endl;
 
    }
    if (way=="Second"){
    std::cout<<"Following resulting values"<<std::endl;
    std::cout<<"Degree = "<<degree+adddegree<<std::endl;
    std::cout<<"Minute = "<<minute+addminute<<std::endl;
    std::cout<<"Radian = "<<newradians<<std::endl;
    std::cout<<"Gradus 0-360 = "<<newgrad360<<std::endl;
    std::cout<<"Sinus = "<<newsinus<<std::endl;
    }
    if (way=="Third"){
    std::cout<<"Following resulting values"<<std::endl;
    std::cout<<"Degree = "<<disparitydegree<<std::endl;
    std::cout<<"Minute = "<<disparityminute<<std::endl;
    }
}
 
//-------------------------------------------------------------------------------------------
void angle::Calculating(string way){
    if (way=="First"){
        radians=degree*(M_PI/180);//toRadians
        grad360=int(radians*180/M_PI)%360;//to360
        sinus=sin(radians);
    }
    if (way=="Second"){
            newdegree=degree+adddegree;
            newminute=minute+addminute;
        newradians=newdegree*(M_PI/180);//toRadians
        newgrad360=int(newradians*180/M_PI)%360;//to360
        newsinus=sin(newradians);
    }
    if (way=="Third"){
            if(degree<newdegree){
                    disparitydegree=newdegree-degree;
                    disparityminute=newminute-minute;
                    }
            else
                {
                    disparitydegree=degree-newdegree;
                    disparityminute=-minute-newminute;
                }
 
    }
}
 
 
 
 
angle make_angle(double _degree, double _minute) {
return angle(_degree,_minute);
}
 
ostream &operator<<(ostream & out, const angle corner1) {
    out << "Degree: " << corner1.degree << " Minute: " << corner1.minute;
    return out;
}

triangle.cpp
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
#include <iostream>
#include "triangle.h"
#include <string>
#include "math.h"
#include <sstream>
 
 
string triangle::toString(){
string Res;
//Sides
    ostringstream sta;
    sta << a;
    ostringstream stb;
    stb << b;
    ostringstream stc;
    stc << c;
//corners
    ostringstream sc1;
    sc1 << corner1;
    ostringstream sc2;
    sc2 << corner2;
    ostringstream sc3;
    sc3 << corner3;
//parameters
 
    ostringstream ssqu;
    ssqu << Square();
    ostringstream sper;
    sper << Perimeter();
//String
    Res="Triangle("+sta.str()+","+stb.str()+","+stc.str()+") with ("+sc1.str()+","+sc2.str()+","+sc3.str()+") corners is "+Type()+". It is "+sper.str()+" long and "+ssqu.str()+" area. Heights are "+Hight()+" . " ;
    return Res;
       }
//считывание параметров треугольника
void triangle::Read(){
     std::cout << "Side A: ";
     std::cin >> a;
     std::cout << "Side B: ";
     std::cin >> b;
     std::cout << "Side C: ";
     std::cin >> c;
     std::cout << "A ^ B : ";
     std::cin >>  corner1;
     std::cout << "B ^ C : ";
     std::cin >>  corner2;
     std::cout << "C ^ A : ";
     std::cin >>  corner3;
     std::cout << std::endl<< std::endl;
     }
 
//вычисление периметра
void triangle::Display(){
     std::cout<<"Side A="<<a<<endl<<"Side B="<<b<<endl<<"Side C="<<c<<endl<<"First corner="<< corner1<<endl<<"Second corner="<< corner2<<endl<<"Third corner="<< corner3<<endl<<endl<<endl;
     }
 
//вычисление площади
double triangle::Square(){
s=sqrt(p/2*(p/2-a)*(p/2-b)*(p/2-c));
    return s;
    }
//вычисление периметра
double triangle::Perimeter(){
p=a+b+c;
return p;
};
//вычисление высот
string triangle::Hight(){
double ha,hb,hc;
string sha,shb,shc,result;
 
ha=2*s/a;
hb=2*s/b;
hc=2*s/c;
//перевод в строку
        ostringstream ssha;
    ssha << ha;
    sha=ssha.str();
 
        ostringstream sshb;
    sshb << hb;
    shb=sshb.str();
 
        ostringstream sshc;
    sshc << hc;
    shc=sshc.str();
result="to A= "+sha+", to B= "+shb+",to C= "+shc;
return result;
};
 
string triangle::Type(){
       string q,result;
       q="";
       if ((corner1!=corner2)&&(corner2!=corner3)&&(corner1!=corner3)) result="Normal";
       else
       if ((corner1==corner2)&&(corner2==corner3)&&(corner3==corner1)) result="Equilateral(3 sides)";
       else
       if ((corner1==corner2) || (corner2==corner3) ||(corner3==corner1)) result="Equilateral(2 sides)";
       if ((corner1==90) || (corner2==90) || (corner3==90)) q=" Pr.corner ";
       return q+result;
       }
//создание объекта класса (альтернативное конструирование)------------------------------------------
 
triangle make_triangle(double _a,double _b,double _c,angle _corner1,angle _corner2,angle _corner3) {
return triangle(_a, _b, _c, _corner1, _corner2, _corner3);
}
triangle.h
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
#ifndef TRIANGLE_CLASS
#define TRIANGLE_CLASS
 
#include <string>
#include "angle.h"
 
using namespace std;
 
class triangle{
      public:
             //конструктор
            triangle(double _a = 0,double _b = 0,double _c = 0,angle _corner1 = 0,angle _corner2 = 0,angle _corner3 = 0) : a(_a),b(_b),c(_c),corner1(_corner1),corner2(_corner2),corner3(_corner3){};
            ~triangle() {}; //деструктор
             void Read();
             void Display();
             string Type();
             double Square();//вычисление площади
             double Perimeter();//вычисление периметра
             string Hight();//вычисление высот
             string toString();//все параметры сводятся в строку и ее потов в вывод
 
 
      private:
              double a;
              double b;
              double c;
              angle corner1;
              angle corner2;
              angle corner3;
              double p;
              double s;
 
};
 
 
triangle make_triangle(double _a,double _b,double _c,int _corner1,int _corner2,int _corner3);   //альтернативное конструирование
 
#endif

angle.h
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
#ifndef ANGLE_CLASS
#define ANGLE_CLASS
 
using namespace std;
 
class angle{
      public:
             angle(double _degree=0, double _minute=0) : degree(_degree),minute(_minute){};
            ~angle() {};
             void Read(string way);
             void Display(string way);
             int Input(string way);
             void Calculating(string way);
 
      private:
             double degree, adddegree, newdegree, disparitydegree;
             double minute, addminute,newminute, disparityminute;
             int input_result, addinput_result;
             double radians, newradians;
             double grad360, newgrad360;
             double sinus, newsinus;
             friend ostream &operator<<(ostream & out, const angle corner1);
             friend istream &operator>>(istream & in, const angle corner1);
             friend bool operator==(const angle corner1, const angle corner2);
             friend bool operator!=(const angle corner1, const angle corner2);
 
 
};
 
 
angle make_angle(double _degree, double _minute);
#endif
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2014, 14:49     Реализовать класс Triangle ,опираясь на класс Angle для представления углов
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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