Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Desking
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 82
#1

Маштаб треугольника - C++

09.11.2016, 12:15. Просмотров 154. Ответов 2
Метки нет (Все метки)

У меня создается треугольник(Triangle) на основе линий, а линии(Line) на основе точек(Point)
Код Point.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
//
// Created by User on 31.10.2016.
//
 
#ifndef PROST_POINT_H
#define PROST_POINT_H
 
 
class Point {
public:
    Point(int x, int y);
 
    void draw();
    void expand(int a);
 
 
    void move(int dx, int dy);
 
    int x() const;
 
    int y() const;
 
 
private:
    int _x;
    int _y;
 
};
 
 
#endif //UNTITLED23_POINT_H
Point.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
#include "Point.h"
#include <iostream>
 
using namespace std;
 
Point::Point(int x, int y) {
 
    _x = x;
    _y = y;
 
}
 
void Point::draw() {
    cout << "x=" << _x  << " ,y=" << _y << endl;
 
}
 
void Point::move(int dx, int dy) {
 
    _x *= dx;
    _y *= dy;
 
}
void Point::expand(int a){
   _x*=a;
    _y*a;
 
}
 
int Point::x() const {
    return _x;
}
 
int Point::y() const {
    return _y;
}
Line.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
#ifndef PROST_LINE_H
#define PROST_LINE_H
 
 
#include "Point.h"
 
class Line {
public:
    Line(Point *p1, Point *p2);
 
    void draw();
    void move(int dx, int dy);
    void expand(int a);
    double lenght();
    void printLenght();
 
    Point *p1(){return _p1;}
    Point *p2(){return _p2;}
 
 
 
private:
    Point *_p1;
    Point *_p2;
 
};
 
 
#endif //UNTITLED23_LINE_H
Line.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
//
// Created by User on 31.10.2016.
//
 
#include "Line.h"
 
#include <iostream>
#include <math.h>
 
using namespace std;
 
Line::Line(Point *p1, Point *p2) {
 
    _p1 = p1;
    _p2 = p2;
 
}
void Line::expand(int a){
    _p1->expand(a);
    _p2->expand(a);
 
}
void Line::draw() {
 
    _p1->draw();
    _p2->draw();
}
 
void Line::move(int dx, int dy) {
    _p1->move(dx, dy);
 
    _p2->move(dx, dy);
 
}
 
double Line::lenght() {
    double lenght;
    int x1 = _p1->x();
    int x2 = _p2->x();
    int y1 = _p1->y();
    int y2 = _p2->y();
   lenght = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
 
    return lenght;
}
 
void Line::printLenght(){
    cout << "Lenght line= " << lenght() << endl;
}
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
Triangle.h//
// Created by User on 01.11.2016.
//
 
#ifndef PROST_TRIANGLE_H
#define PROST_TRIANGLE_H
 
 
#include <math.h>
#include "Line.h"
 
class Triangle {
public:
    Triangle(Line *line1, Line *line2);
    void expand(int a);
    double perimeter();
    double area();
    void printCalculated();
 
 
private:
    Line *_line1;
    Line *_line2;
    Line *_line3;
};
Triangle.cpp
#include <iostream>
#include "Triangle.h"
#include "Line.h"
#include "Point.h"
 
 
using namespace std;
 
Triangle::Triangle(Line *line1, Line *line2) {
    _line1 = line1;
    _line2 = line2;
    _line3 = new Line(_line1->p2(), _line2->p2());
 
}
void Triangle::expand(int a) {
 
    _line1->expand(a);
    _line2->expand(a);
 
 
 
 
}
double Triangle::perimeter() {
    cout<<_line1->lenght()<<endl;
    cout<<_line2->lenght()<<endl;
    cout<<_line3->lenght();
    return _line1->lenght() + _line2->lenght() + _line3->lenght();
}
 
double Triangle::area() {
 
}
 
void Triangle::printCalculated(){
    cout << "Perimeter = " <<perimeter() << endl;
    cout << "Area = " << area() << endl;
}
 
 
 
 
 
 
#endif //UNTITLED23_TRIANGLE_H
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
#include "Point.h"
#include "Line.h"
#include "Triangle.h"
 
 
 
int main() {
    Point p1(3, 0);
    Point p2(3, 3);
    Point p3(-1, 0);
 
 
    Line line1(&p1, &p2);
     line1.printLenght();
    Line line2(&p1, &p3);
 
 
    Triangle tr(&line1, &line2);
    tr.expand(2);
    tr.printCalculated();
    line1.printLenght();
 
 
    
 
    return 0;
}
У меня создана функция которая масштабирует треугольник, но она работает не правильно( Помогите пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2016, 12:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Маштаб треугольника (C++):

матрица разделена диагоналями на 4 треугольника, элементы верхнего и нижнего треугольника нулевые - C++
Задание матрица разделена диагоналями на 4 треугольника, элементы верхнего и нижнего треугольника нулевые.Не понимаю,как сделать???помогите...

Известна гипотенуза С и противолежащий угол B прямоугольного треугольника. Найти периметр треугольника - C++
Помогите написать данную программу: Известна гипотенуза С и противолежащий угол B прямоугольного треугольника. Найти периметр треугольника

Даны длины сторон треугольника, определить тип этого треугольника - C++
Даны длины сторон треугольника, определить тип этого треугольника

Заданы координаты вершин треугольника. Вывести их в порядке обхода треугольника по часовой стрелке - C++
Заданы координаты вершин треугольника.Вывести их в порядке обхода треугольника по часовой стрелке. Вот код, но правильный ли он?! ...

Зная площадь прямоугольного треугольника и угол при основании, найти все стороны треугольника - C++
Требования к программе: - Входные данные ввести с помощью стандартных процедур ввода; - На печать вывести значение входной переменной и...

Заданы длины двух сторон треугольника и угол между ними. найти площадь треугольника? - C++
Заданы длины двух сторон треугольника и угол между ними. найти площадь треугольника?

2
AlexVRud
461 / 172 / 45
Регистрация: 04.07.2014
Сообщений: 480
09.11.2016, 12:32 #2
Desking, Ты дважды изменяешь одну из точек (p1), т.к. она присудствует в обоих линиях.
Создавай треугольник на основе трёх точек. Тогда уже сам треугольник сможет создавать рёбра (поменяй линию на ребро или отрезок для большего соответствия общепринятой терминологии).
Если ты будешь хранить ссылки на точки в треугольнике, то будет проще проводить манипуляции.
Так же стоит хранить точки в массиве и завести функцию для преобразования (масштабирования) всех точек.
Почитай про Матрицу перехода.
0
Desking
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 82
09.11.2016, 21:38  [ТС] #3
В Point.cpp на 26 строке нужно _y*=x, просто не правильно написал, но результат тотже

Добавлено через 1 минуту
А можете помочь?

Добавлено через 8 часов 55 минут
Кто поможет?

Добавлено через 8 минут
Предложите свое решение, этой проблемы, мне нужно именно через линии
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2016, 21:38
Привет! Вот еще темы с ответами:

С клавиатуры вводятся три числа, считая их сторонами треугольника найти углы этого треугольника - C++
с клавиатуры вводятся три числа, считая их сторонами треугольника найти углы этого треугольника, можно это как-то просто написать, без...

Дана сторона равностороннего треугольника. Найти площадь этого треугольника, его высоты, радиусы вписанной и описанной окружностей. - C++
Дана сторона равностороннего треугольника. Найти площадь этого треугольника, его высоты, радиусы вписанной и описанной окружностей.

Даны три положительных числа а, b, с. Проверить, будут ли они сторонами треугольника. Если да, то вычислить площадь этого треугольника. - C++
Помогите, пожалуйста, исправить здесь ошибку времени... #include&lt;iostream&gt; #include&lt;cmath&gt; using namespace std; void main() { ...

По длинам двух сторон некоторого треугольника и углу между ними найти длину третьей стороны и площадь этого треугольника - C++
Привет всем. Помогите исправить программу. Вот задача: По длинам двух сторон некоторого треугольника и углу между ними найти длину...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.