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

Класс треугольников Triangle - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Feya
2 / 2 / 0
Регистрация: 14.03.2012
Сообщений: 12
14.03.2012, 18:50     Класс треугольников Triangle #1
Ребят, надеюсь у Вас будет минутка свободного времени для меня. Дело в том, что я вроде бы и понимаю, что и как писать в первых двух частях, но в последней, третей части, не могу сообразить как писать тестирующую функцию и куда пихать нахождение периметра =\
Если сможете, помогите, пожалуйста, буду очень благодарна.


Задача:

Опишите класс треугольников Triangle. Задайте функцию сравнения треугольников. Задайте функцию вычисления периметра треугольника.

Мой Код:

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
// Lab_1.cpp: определяет точку входа для консольного приложения.
//
 
#include"stdafx.h"
#include <iostream>
#include "Math.h"
#include "stdio.h"
using std::cout;
using std::cin;
 
 
class Triangle {
private:
    double x1, y1;
    double x2, y2;
    double x3, y3;
    double angle_k, angle_l, angle_m;
public:
    Triangle();
    Triangle(double, double, double, double, double, double);
    void setx1(double);
    void setx2(double);
    void setx3(double);
    void sety1(double);
    void sety2(double);
    void sety3(double);
    double getx1();
    double getx2();
    double getx3();
    double gety1();
    double gety2();
    double gety3();
    void input();
    void print();
    bool sravnenie (Triangle);
    double perimetr (Triangle);
};
Triangle::Triangle(){
    x1=1;
    x2=1;
    x3=1;
    y1=1;
    y2=1;
    y3=1;
}
Triangle::Triangle(double x1 , double x2, double x3, double y1, double y2, double y3){
    if (x1>0)
    (*this).x1=x1;
    else(*this).x1=1;
    if (x2>0)
    (*this).x2=x2;
    else(*this).x2=1;
    if (x3>0)
    (*this).x3=x3;
    else(*this).x3=1;
    if (y1>0)
    (*this).y1=y1;
    else(*this).y1=1;
    if (y2>0)
    (*this).y2=y2;
    else(*this).y2=1;
    if (y3>0)
    (*this).y3=y3;
    else(*this).y3=1;
}
void Triangle::setx1(double a){
    x1=a;
}
void Triangle::setx2(double b){
    x2=b;
}
void Triangle::setx3(double c){
    x3=c;
}
void Triangle::sety1(double o){
    y1=o;
}
void Triangle::sety2(double f){
    y2=f;
}
void Triangle::sety3(double n){
    y3=n;
}
double Triangle::getx1(){
    return x1;
}
double Triangle::getx2(){
    return x2;
}
double Triangle::getx3(){
    return x3;
}
double Triangle::gety1(){
    return y1;
}
double Triangle::gety2(){
    return y2;
}
double Triangle::gety3(){
    return y3;
}
void Triangle::input(){
    cout<<"Vvedite x1, x2, x3, y1, y2, y3"<<"\n";
        cin>>x1;
    if (x1>0);
    else l:cout<<"Error x1"<<"\n";
    goto l;
    cin>>x2;
    if (x2>0);
    else cout<<"Error x2"<<"\n";
    cin>>x3;
    if (x3>0);
    else cout<<"Error x3"<<"\n";
    cin>>y1;
    if (y1>0);
    else cout<<"Error y1"<<"\n";
    cin>>y2;
    if (y2>0);
    else cout<<"Error y2"<<"\n";
    cin>>y3;
    if (y3>0);
    else cout<<"Error y3"<<"\n";
}
void Triangle::print(){
    cout<<x1<<","<<x2<<","<<x3<<","<<y1<<","<<y2<<","<<y3<<"\n";
}
bool Triangle::sravnenie (Triangle){
 
    if(x1==y1 || x2==y2 || x3==y3){
        return true;}
    else{
        return false;
}
}
int main ()
{
    double a,b,c,perimetr;
    cout<<"Vvedite a, b, c"<<"\n";
    cin>>a;
    if (a>0);
    else cout<<"Error a"<<"\n";
    cin>>b;
    if (b>0);
    else cout<<"Error b"<<"\n";
    cin>>c;
    if (b>0);
    else cout<<"Error c"<<"\n";{
        perimetr=a+b+c;
    }
    cin.get();
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2012, 18:50     Класс треугольников Triangle
Посмотрите здесь:

C++ Класс Triangle
Класс Triangle C++
Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов C++
C++ Класс Triangle
Класс Triangle ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
14.03.2012, 19:18     Класс треугольников Triangle #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool Triangle::sravnenie (Triangle tr2)
{ 
    if(x1==tr2.x1 && x2==tr2.x2 && x3==tr2.x3 && y1==tr2.y1 && y2==tr2.y2 && y3==tr2.y3 )
       return true
    return false;
}
double Triangle::perimetr() //!!!! без параметра. Считаем периметр этого(this) треугольника
{
    return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))+
             sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2))+
             sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
}
Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    Triangle t1(0,0,100,100,0,100),t2(100,100,0,200,200,200);
    if(t1.sravnenie(t2))
        cout<<"Равны";
    else
        cout<<"Не равны";
    double PP=t1.perimetr();
    cout<<PP;
}
Feya
2 / 2 / 0
Регистрация: 14.03.2012
Сообщений: 12
14.03.2012, 19:33  [ТС]     Класс треугольников Triangle #3
Спасибо большое за помощь, но у меня еще осталисось пару проблем...
Вот Код уже с Вашими исправлениями:
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
// Lab_1.cpp: определяет точку входа для консольного приложения.
//
 
#include"stdafx.h"
#include <iostream>
#include "Math.h"
#include "stdio.h"
using std::cout;
using std::cin;
 
 
class Triangle {
private:
    double x1, y1;
    double x2, y2;
    double x3, y3;
    double angle_k, angle_l, angle_m;
public:
    Triangle();
    Triangle(double, double, double, double, double, double);
    void setx1(double);
    void setx2(double);
    void setx3(double);
    void sety1(double);
    void sety2(double);
    void sety3(double);
    double getx1();
    double getx2();
    double getx3();
    double gety1();
    double gety2();
    double gety3();
    void input();
    void print();
    bool sravnenie (Triangle);
    double perimetr (Triangle);
};
Triangle::Triangle(){
    x1=1;
    x2=1;
    x3=1;
    y1=1;
    y2=1;
    y3=1;
}
Triangle::Triangle(double x1 , double x2, double x3, double y1, double y2, double y3){
    if (x1>0)
    (*this).x1=x1;
    else(*this).x1=1;
    if (x2>0)
    (*this).x2=x2;
    else(*this).x2=1;
    if (x3>0)
    (*this).x3=x3;
    else(*this).x3=1;
    if (y1>0)
    (*this).y1=y1;
    else(*this).y1=1;
    if (y2>0)
    (*this).y2=y2;
    else(*this).y2=1;
    if (y3>0)
    (*this).y3=y3;
    else(*this).y3=1;
}
void Triangle::setx1(double a){
    x1=a;
}
void Triangle::setx2(double b){
    x2=b;
}
void Triangle::setx3(double c){
    x3=c;
}
void Triangle::sety1(double o){
    y1=o;
}
void Triangle::sety2(double f){
    y2=f;
}
void Triangle::sety3(double n){
    y3=n;
}
double Triangle::getx1(){
    return x1;
}
double Triangle::getx2(){
    return x2;
}
double Triangle::getx3(){
    return x3;
}
double Triangle::gety1(){
    return y1;
}
double Triangle::gety2(){
    return y2;
}
double Triangle::gety3(){
    return y3;
}
void Triangle::input(){
    cout<<"Vvedite x1, x2, x3, y1, y2, y3"<<"\n";
        cin>>x1;
    if (x1>0);
    else l:cout<<"Error x1"<<"\n";
    goto l;
    cin>>x2;
    if (x2>0);
    else cout<<"Error x2"<<"\n";
    cin>>x3;
    if (x3>0);
    else cout<<"Error x3"<<"\n";
    cin>>y1;
    if (y1>0);
    else cout<<"Error y1"<<"\n";
    cin>>y2;
    if (y2>0);
    else cout<<"Error y2"<<"\n";
    cin>>y3;
    if (y3>0);
    else cout<<"Error y3"<<"\n";
}
void Triangle::print(){
    cout<<x1<<","<<x2<<","<<x3<<","<<y1<<","<<y2<<","<<y3<<"\n";
}
bool Triangle::sravnenie (Triangle tr2){ 
    if(x1==tr2.x1 && x2==tr2.x2 && x3==tr2.x3 && y1==tr2.y1 && y2==tr2.y2 && y3==tr2.y3 )
       return true;
    return false;
}
double Triangle::perimetr(){
    return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))+
             sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2))+
             sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
} 
 
int main()
{
    Triangle t1(0,0,100,100,0,100),t2(100,100,0,200,200,200);
    if(t1.sravnenie(t2))
        cout<<"Равны";
    else
        cout<<"Не равны";
    double PP=t1.perimetr();
    cout<<PP;
    cin.get();
    return 0;
}
Visual Studio выбивает вот такие ошибки:
Ошибка 1 error C2511: double Triangle:erimetr(void): перегруженная функция-член не найдена в "Triangle" c:\users\feya\desktop\ооп\triangle_lab_1\triangle_lab_1\triangle_lab_1.cpp 133
Ошибка 2 error C2660: Triangle:erimetr: функция не принимает 0 аргументов c:\users\feya\desktop\ооп\triangle_lab_1\triangle_lab_1\triangle_lab_1.cpp 146
3 IntelliSense: объявление несовместимо с "double Triangle:erimetr(Triangle)" (объявлено в строке 36) c:\users\feya\desktop\ооп\triangle_lab_1\triangle_lab_1\triangle_lab_1.cpp 132
4 IntelliSense: слишком мало аргументов в вызове функции c:\users\feya\desktop\ооп\triangle_lab_1\triangle_lab_1\triangle_lab_1.cpp 145

и еще вопрос он только в начале открывает компилятор, а после ввода трех переменных закрывает и не показывает результат...
Что с этим можно сделать?
zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
14.03.2012, 19:48     Класс треугольников Triangle #4
Так я же Вас в тексте (7 строка) предупредил, что в объявлении класса perimetr объявлен неправильно.
Параметр надо убрать!!!!!
Feya
2 / 2 / 0
Регистрация: 14.03.2012
Сообщений: 12
14.03.2012, 19:56  [ТС]     Класс треугольников Triangle #5
Цитата Сообщение от zss2 Посмотреть сообщение
Так я же Вас в тексте (7 строка) предупредил, что в объявлении класса perimetr объявлен неправильно.
Параметр надо убрать!!!!!
Спасибо большое, исправила, но теперь он сам, что-то считает и выдает ответ просто, то есть не дает ввести пользователю данные.
И мне не совсем ясна формула периметра, могли бы вы дать её название или какуюто информацию, чтобы я могла ознакомится с данной формулой.
zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
14.03.2012, 21:06     Класс треугольников Triangle #6
Формула периметра - вычисляем дину каждой стороны
по формуле "Корень квадратный из суммы квадратов катетов"
и суммируем все стороны.
А для ввода вставьте вызов метода input после 140 строки:
C++
1
t1.input();t2.input();
Feya
2 / 2 / 0
Регистрация: 14.03.2012
Сообщений: 12
14.03.2012, 22:41  [ТС]     Класс треугольников Triangle #7
Так это ж только для прямоугольного треугольника периметр, или нет. Я просто не могу разобраться с формулой.
плюс, после ввоода 6 сторон нажав энтер, программа выдает Error error error error и так пока не остановите программу.

Добавлено через 39 минут
Плюс все равно кампилятор на экран не выводит результатов.
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
15.03.2012, 01:28     Класс треугольников Triangle #8
Цитата Сообщение от Feya Посмотреть сообщение
Опишите класс треугольников Triangle. Задайте функцию сравнения треугольников. Задайте функцию вычисления периметра треугольника.
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
#include "iostream"
#include "cmath"
 
using namespace std;
 
class Triangle
{
    double x1, y1;
    double x2, y2;
    double x3, y3;
    double AB, BC, CA;
public:
    Triangle(double a, double b, double c, double d, double e, double f);
    ~Triangle();
    double Perimeter();
    void Comparison(Triangle tr);
};
 
Triangle::Triangle(double a, double b, double c, double d, double e, double f)
{
    x1 = a;
    y1 = b;
    x2 = c;
    y2 = d;
    x3 = e;
    y3 = f;
 
    AB = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
    BC = sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
    CA = sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
}
 
Triangle::~Triangle()
{}
 
double Triangle::Perimeter()
{
    return AB + BC + CA;
}
 
void Triangle::Comparison(Triangle tr)
{
    if (AB == tr.AB && BC == tr.BC && CA == tr.CA)
    {
        cout << "\n\nТреугольники равны\n";
    }
    else 
    {
        cout << "\n\nТреугольники не равны\n";
    }
}
 
int main()
{
    setlocale(0,"");
    double p1, p2;
    
    Triangle t(5, 5, 30, 20, 40, 5);
    Triangle t2(5, 5, 30, 20, 30, 5);
 
    p1 = t.Perimeter();
    p2 = t2.Perimeter();
    
    cout << "Периметр 1 треугольника = " << p1
        << "\nПериметр 2 треугольника = " << p2;
 
    t.Comparison(t2);
 
    system("pause >> null");
    return 0;
}
Миниатюры
Класс треугольников Triangle   Класс треугольников Triangle  
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
15.03.2012, 01:32     Класс треугольников Triangle #9
Равенство треугольников -> Третий признак равенства треугольников. Если три стороны одного треугольника равны соответственно трем сторонам другого треугольника, то такие треугольники равны.
Feya
2 / 2 / 0
Регистрация: 14.03.2012
Сообщений: 12
15.03.2012, 14:00  [ТС]     Класс треугольников Triangle #10
Спасибо, но это получается, что вводить другие данные можно только в коде?
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
15.03.2012, 14:07     Класс треугольников Triangle #11
Цитата Сообщение от Feya Посмотреть сообщение
Спасибо, но это получается, что вводить другие данные можно только в коде?
Ну а что состовляет труда переделать?
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
15.03.2012, 14:15     Класс треугольников Triangle #12
конечно можно сделать и более удобный и человеческий ввод! Но думаю и так нормально! Нужно будет переделаете!

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
#include "iostream"
#include "cmath"
 
using namespace std;
 
class Triangle
{
        double x1, y1;
        double x2, y2;
        double x3, y3;
        double AB, BC, CA;
public:
        Triangle(double a, double b, double c, double d, double e, double f);
        ~Triangle();
        double Perimeter();
        void Comparison(Triangle tr);
};
 
Triangle::Triangle(double a, double b, double c, double d, double e, double f)
{
        x1 = a;
        y1 = b;
        x2 = c;
        y2 = d;
        x3 = e;
        y3 = f;
 
        AB = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
        BC = sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
        CA = sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
}
 
Triangle::~Triangle()
{}
 
double Triangle::Perimeter()
{
        return AB + BC + CA;
}
 
void Triangle::Comparison(Triangle tr)
{
        if (AB == tr.AB && BC == tr.BC && CA == tr.CA)
        {
                cout << "\n\nТреугольники равны\n";
        }
        else 
        {
                cout << "\n\nТреугольники не равны\n";
        }
}
 
int main()
{
        setlocale(0,"");
        double x1, y1;
        double x2, y2;
        double x3, y3;
        double p1, p2;
 
        cout << "Введите координаты первого треугольника(x1 y1 x2 y2 x3 y3) - ";
        cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
        Triangle t(x1, y1, x2, y2, x3, y3);
        
        cout << "Введите координаты второго треугольника(x1 y1 x2 y2 x3 y3) - ";
        cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
        Triangle t2(x1, y1, x2, y2, x3, y3);
 
   
        p1 = t.Perimeter();
        p2 = t2.Perimeter();
        
        cout << "Периметр 1 треугольника = " << p1
                << "\nПериметр 2 треугольника = " << p2;
 
        t.Comparison(t2);
 
        system("pause >> null");
        return 0;
}
Миниатюры
Класс треугольников Triangle  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2012, 14:24     Класс треугольников Triangle
Еще ссылки по теме:

C++ Создать класс triangle
Создать класс triangle с полями-сторонами C++
Класс Triangle ошибка C++

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

Или воспользуйтесь поиском по форуму:
Feya
2 / 2 / 0
Регистрация: 14.03.2012
Сообщений: 12
15.03.2012, 14:24  [ТС]     Класс треугольников Triangle #13
Спасибо большое за помощь, и простите, что нервы поматала
Yandex
Объявления
15.03.2012, 14:24     Класс треугольников Triangle
Ответ Создать тему
Опции темы

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