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

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

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

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

09.11.2016, 12:15. Просмотров 117. Ответов 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;
}
У меня создана функция которая масштабирует треугольник, но она работает не правильно( Помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2016, 12:15     Маштаб треугольника
Посмотрите здесь:

C++ периметр треугольника
C++ угол треугольника
площадь треугольника C++
C++ стороны треугольника
Написать программу, которая считывает длины сторон треугольника, проверяет возможность построения треугольника и находит все медианы этого треуголника C++
C++ Площадь треугольника
написать программу, которая считывает длины сторон треугольника, проверяет возможность построения треугольника и находит все медианы этого треугольник C++
C++ Расчет треугольника
матрица разделена диагоналями на 4 треугольника, элементы верхнего и нижнего треугольника нулевые C++
С клавиатуры вводятся три числа, считая их сторонами треугольника найти углы этого треугольника C++
C++ Периметр треугольника
Углы треугольника C++

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

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

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

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

Добавлено через 8 минут
Предложите свое решение, этой проблемы, мне нужно именно через линии
Yandex
Объявления
09.11.2016, 21:38     Маштаб треугольника
Ответ Создать тему
Опции темы

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