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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Односвязный кольцевой список (упорядочить список по убыванию номера рейса; добавить сведения о новом пассажире, поместив его после всех пассажиров) http://www.cyberforum.ru/cpp-beginners/thread879504.html
Добрый день народ! Нужна ваша помощь Написал код программы, не могу понять как написать дальше 2 функции. 1. Упорядочить список по убыванию номера рейса (sort) 2. Добавить сведения о новом пассажире, поместив его после всех пассажиров заданного рейса (dab) #include "stdafx.h" #include "iostream"
C++ Сумма элементов массива, у которых сумма индексов, на которых они находятся, - четное число. Проверить код нужно найти сумму элементов массива, у которых сумма индексов, на которых они находятся, четное число. вот что я написал, но код не работает совсем. подскажите что не так. #include<iostream> #include<stdlib.h> int main() { int d; int i,j,m,n; long int s,s1,s2; http://www.cyberforum.ru/cpp-beginners/thread879501.html
Системные вызовы C++
Мне нужно продемонстрировать работу системных вызовов windows на с++. Как это можно сделать?
Центр симметрии C++
Совсем не могу написать код. Проверить или известный квадратный массив имеет центр симметрии. подскажите
C++ Сформируйте и выведите на печать динамический массив из элементов структурного типа http://www.cyberforum.ru/cpp-beginners/thread879456.html
2. Сформируйте и выведите на печать динамический массив из элементов структурного типа. Выполните поиск элементов в массиве, удовлетворяющих заданному в варианте условию (таблица) и сформируйте из них новый массив. 3. Для формирования, печати структур, выделения памяти, заполнения массивов, поиска заданных элементов напишите отдельные функции. В функции main() должны быть размещены только...
C++ Классы с динамической памятью (раз-ть класс MyString, реализующий для класса символьной строки несколько конструкторов, деструктор и функции i/o) Дорогие друзья! Прошу вас помочь написать мне сию программу:(Не пугайтесь читать описание работы, тут больше текста,чем реального смысла) Разработать класс MyString, реализующий для класса символьной строки несколько конструкторов, деструктор и функции ввода-вывода. Реализовать в этом классе заданные в варианте индивидуального задания функции. Создание объектов класса, ввод исходных данных,... подробнее

Показать сообщение отдельно
skande
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 7
26.05.2013, 18:04     Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов
Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов. Собственно вот такая проблема. Не могу никак связать эти две задачи. Ну не получается. Вроде 25 и 26 сделал, но соединить их никак не получается. Условие и код самих задач прилагается.
Задание 25:
Создать класс Triangle для представления треугольника. Поля данных должны включать углы и стороны. Требуется реализовать операции: получения и изменения полей данных, вычисления площади, вычисления периметра, вычисления высот, а также определения вида треугольника (равносторонний, равнобедренный или прямоугольный).
Задание 26:
Создать класс Angle для работы с углами на плоскости, задаваемыми величинами в градусах и минутах. Обязательно должны быть реализованы: перевод в радианы, приведение к диапазону 0-360, увеличение и уменьшение угла на заданную величину, получение синуса, сравнение углов.
Код 25 и 26 задачи: (разделю на 3 части, т.к. не знаю как тут все в один сделать)
Заголовочный (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
#ifndef TRIANGLE_CLASS
#define TRIANGLE_CLASS
 
#include <string>
 
using namespace std;
 
class triangle{
      public:
            
            triangle(double _a = 0,double _b = 0,double _c = 0,int _corner1 = 0,int _corner2 = 0,int _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();
             double Hight();
             string toString();
             int Control();
 
 
      private:
              double a;
              double b;
              double c;
              double corner1;
              double corner2;
              double corner3;
              double ha,hc,hb;
              int control;
 
};
 
 
triangle make_triangle(double _a,double _b,double _c,int _corner1,int _corner2,int _corner3);
#endif
Файл 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
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
#include <iostream>
#include "triangle.h"
#include <string>
#include <cmath>
#include <sstream>
 
//____________________________________________________________________________________toString
string triangle::toString(){
string Res;
 
string sha,shb,shc;
 
//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();
    
//Hights
    Hight();
    ostringstream ssha;
    ssha << ha;
//    sha=ssha.str();
 
    ostringstream sshb;
    sshb << hb;
//    shb=sshb.str();
 
        ostringstream sshc;
    sshc << hc;
//    shc=sshc.str();
 
 
    
//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: "+ssha.str()+" to A, "+sshb.str()+" to B, "+sshc.str()+" to C." ;
    return Res;
       }
 
void triangle::Read(){
 
     if (control==1){
                     std::cout << "Side A: ";
                     std::cin >> a;
                     std::cout << "Side B: ";
                     std::cin >> b;
                     std::cout << "Side C: ";
                     std::cin >> c;
 
                     corner1=acos((c*c+b*b-a*a)/(2*c*b))*180/M_PI;
                     corner2=acos((c*c+a*a-b*b)/(2*c*a))*180/M_PI;
                     corner3=180-(corner1+corner2);
                     };
 
     if (control==2){
                     std::cout << "Corner 1: ";
                     std::cin >> corner1;
                     std::cout << "Corner 2: ";
                     std::cin >> corner2;
                     std::cout << "Side A: ";
                     std::cin >> a;
 
                     corner3=180-(corner1+corner2);
                     b=(a*((sin(corner1*M_PI/180))/(sin(corner3*M_PI/180))));
                     c=(a*((sin(corner2*M_PI/180))/(sin(corner3*M_PI/180))));
 
                    std::cout << "Sin ^1: "<<sin(corner1*M_PI/180)<<" Sin ^2: "<<sin(corner2*M_PI/180)<<" Sin ^3: "<<sin(corner3*M_PI/180)<< std::endl ;
                     };
 
if (control==3){
                     std::cout << "Corner 1: ";
                     std::cin >> corner1;
                     std::cout << "Side B: ";
                     std::cin >> b;
                     std::cout << "Side C: ";
                     std::cin >> c;
 
                     a=(sqrt(pow(b,2)+ pow(c,2)- (2*c*b*cos(corner1*M_PI/180))));
                     corner2=acos((pow(c,2)+pow(a,2)-pow(b,2))/(2*c*a))*180/M_PI;
                     corner3=180-(corner1+corner2);
                     };
     std::cout << std::endl<< std::endl;
     }
 
int triangle::Control(){
     std::cout << "IF U know 3 sides - press 1"<<std::endl<<"IF U know 2 corners and 1 side - press 2 "<<std::endl<<"IF U know 2 sides and 1 corner - press 3 "<<std::endl;
     std::cin >> control;
     return control;
     }
 
 
 
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(){
    return sqrt(Perimeter()/2*(Perimeter()/2-a)*(Perimeter()/2-b)*(Perimeter()/2-c));;
    }
 
double triangle::Perimeter(){
return a+b+c;
};
 
 
 
double triangle::Hight(){
//double ha,hb,hc;
 
 
ha=2*Square()/a;
hb=2*Square()/b;
hc=2*Square()/c;
 
 
return ha,hb,hc;
};
 
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,int _corner1,int _corner2,int _corner3) {
return triangle(_a, _b, _c, _corner1, _corner2, _corner3);
}
Файл main:
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
#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 << "Write NEW triangle:"<<endl;
    t1.Control();
    t1.Read();
 
 
 
 
 
 
    cout << "Triangle now "<<endl;
    t1.Display();
 
 
    cout << "Type = "<<t1.Type()<<endl;
 
    cout << "Perimeter = "<<t1.Perimeter()<<endl;
 
    cout << "Square = "<<t1.Square()<<endl;
 
 
    cout<<endl<<endl;
 
    cout<<t1.toString()<<endl<<endl<<endl;
 
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
И соответственно 26 задача.
Заголовочный файл (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
#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();
             void Control();
             void Display();
             void toRadians();
             void to360();
             void angleSinus();
             void Add( angle&);
             bool Compare(const angle&);
             string toString();
 
 
      protected:
             int degree;
             int minute;
             int input_result;
             double radians;
             double grad360;
             double sinus;
 
};
 
#endif
Файл 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
#include <iostream>
#include "angle.h"
#include <string>
#include "math.h"
#include <sstream>
//-------------------------------------------------------------------------------------------
void angle::Read(){
        std::cout<<"Write Degrees ";
        std::cin>>degree;
 
        std::cout<<"Write Minutes ";
        std::cin>>minute;
        Control();
        }
//-------------------------------------------------------------------------------------------
void angle::Display(){
    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;
    std::cout<<std::endl<<std::endl<<std::endl;
 
}
void angle::toRadians(){
radians=(degree+minute/60)*(M_PI/180);
}
void angle::to360(){
grad360=(int)round(radians*180/M_PI)%360;
}
void angle::angleSinus(){
sinus=sin(radians);
}
void angle::Add( angle& other){
    int a;
    a=degree;
    degree=degree+other.degree;
    other.degree=a;
    int b;
    b=minute;
    minute=minute+other.minute;
    other.minute=b;
    toRadians();
    to360();
    angleSinus();
}
bool angle::Compare(const angle& other){
    cout<<radians<<" vs "<<other.radians<<endl;
    return radians<other.radians;
 
}
void angle::Control(){
    if (minute>59) {
        degree=degree+int(minute/60);
        minute=minute%60;
                    }
}
//====tostring
string angle::toString() {
string Res;
//parameter
    ostringstream stdeg;
    stdeg << degree;
    ostringstream stmin;
    stmin << minute;
//values
    ostringstream strad;
    strad << radians;
    ostringstream stsin;
    stsin << sinus;
//srtring
    Res="So, for "+stdeg.str()+" deg, "+stmin.str()+" min angle sinus = "+stsin.str()+" , and radians = "+strad.str();
    return Res;
}
//===========================================================================================
 
angle make_angle(double _degree, double _minute) {
return angle(_degree,_minute);
}
Файл main:
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
#include <iostream>
#include "angle.h"
#include <string>
using namespace std;
 
int main()
{
 
angle Ang1,Ang2;
 
    Ang1=make_angle(0,0);
    Ang2=make_angle(0,0);
 
    Ang1.Read();
 
    Ang1.toRadians();
    Ang1.to360();
    Ang1.angleSinus();
 
    Ang1.Display();
 
 
cout<<endl<<endl<<"Now we start to change the values"<<endl<<endl;
 
    Ang2.Read();
 
    Ang1.Add(Ang2);
    Ang2.toRadians();
    Ang2.to360();
    Ang2.angleSinus();
 
cout<<endl<<endl<<endl;
 
    Ang2.Display();
    Ang1.Display();
 
cout<<endl<<endl<<"Now we start to compare the values"<<endl<<endl;
 
if((Ang1.Compare(Ang2)==true)) cout << "2nd angle << 1st angle" << endl;
else cout << "2nd angle >> 1st angle" << endl;
 
cout<<endl<<"Now TO STRING!!!"<<endl;
    cout<<Ang2.toString()<<endl;
    cout<<Ang1.toString()<<endl<<endl<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
 
 
}
Может быть кто-нибудь из присутствующих знает, как реализовать это все
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru