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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
#1

Создайте класс Точка - C++

16.12.2010, 20:41. Просмотров 2465. Ответов 21
Метки нет (Все метки)

Создайте класс «Точка» на координатной плоскости. Данные класса - координаты точки по осям. Класс имеет конструктор по умолчанию (начало координат), конструктор точки, лежащей на оси 0Х, и конструктор произвольной точки. Определите методы для вывода координат точки на экран, определения радиуса-вектора точки и угла наклона к оси 0x точки.
1. Объявите объекты созданного типа, обратитесь к методам.
2. Создайте динамические объекты созданного типа, обратитесь к методам.

Добавлено через 1 минуту
помогите выполнить кто сколько может. буду очень благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2010, 20:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создайте класс Точка (C++):

Создайте класс "Точка на плоскости" - C++
Создайте класс "Точка на плоскости". Данные класса должны быть представлены двумя полями: координатами точки. Класс должен содержать...

Создайте класс person. Создайте тип people, описывающий массив элементов типа person. - C++
Создайте класс person. У него должны быть поля: name: string; sex: ("муж", "жен"); height: 100..220. Кроме того, создайте тип people,...

С++ класс (создайте класс с именем Complex для выполнения в арифмитических операий с комплексными числами)) - C++
Кто сможет помогите пожалуйста! (Класс Complex). Создайте класс с именем Complex для выполнения в арифмитических операий с...

Создайте класс Date. Добавить в строковый класс функцию - C++
3)Создайте класс Date, который будет содержать информацию о дате (день, месяц, год). С помощью механизма перегрузки операторов, определите...

Создайте класс, в котором есть ostream& operator<<. Класс должен содержать очередь с приоритетом - C++
Создайте класс, в котором есть ostream&amp; operator&lt;&lt;. Класс должен содержать очередь с приоритетом. Создайте генератор — заполнитель очереди...

Иерархия геометрических объектов: клас точка->класс квадрат->класс прямоугольник - C++
Иерархия геометрических объектов: класс точка-&gt;класс квадрат-&gt;класс прямоугольник. Построить эту иерархию наследованием.. Прошу помочь -...

21
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
16.12.2010, 21:06 #2
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
#include <iostream>
#include <cmath>
 
class Point {
 
public:
    Point(){
        x = y = 0;
    }
    Point( double __x ){
        x = __x;
        y = 0;
    }
    Point( double __x, double __y ){
        x = __x;
        y = __y;
    }
    ~Point(){}
 
public:
    void printCoordinates(){
        std::cout << "x: " << x << "; y: " << y << std::endl;
    }
    double getRadiusVector(){
        return sqrt( pow( x, 2 ) + pow( y, 2 ) );
    }
    double getTiltAngle(){
        return atan( ( y / x ) );
    }
 
private:
    double x;
    double y;
};
 
int main(int argc, char *argv[]){
    Point p1;//0:0
    Point p2( 10 ); //10:0
    Point p3( 13, 24 ); //13:24
    p3.printCoordinates();
    std::cout << "Radius vector: " << p3.getRadiusVector() << std::endl;
    std::cout << "Tilt angle: " << p3.getTiltAngle() << std::endl;
 
    //dynamic
    Point *pd = new Point( 5.7, 123 );
    pd->printCoordinates();
    std::cout << "Radius vector: " << pd->getRadiusVector() << std::endl;
    std::cout << "Tilt angle: " << pd->getTiltAngle() << std::endl;
    delete pd;
    return 0;
}
Не уверен, что с углом все правильно

Добавлено через 11 минут
Так как можно редактировать сообщение в течение 10-ти минут добавлю еще одно. Здесь исправлена ошибка с вычислением градуса
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
#include <iostream>
#include <cmath>
 
class Point {
 
public:
    Point(){
        x = y = 0;
    }
    Point( double __x ){
        x = __x;
        y = 0;
    }
    Point( double __x, double __y ){
        x = __x;
        y = __y;
    }
    ~Point(){}
 
public:
    void printCoordinates(){
        std::cout << "x: " << x << "; y: " << y << std::endl;
    }
    double getRadiusVector(){
        return sqrt( pow( x, 2 ) + pow( y, 2 ) );
    }
    double getTiltAngle(){
        return ( asin( ( x / y ) ) * 180 ) / 3.14;
    }
 
private:
    double x;
    double y;
};
 
int main(int argc, char *argv[]){
    Point p1;//0:0
    Point p2( 10 ); //10:0
    Point p3( 13, 24 ); //13:24
    p3.printCoordinates();
    std::cout << "Radius vector: " << p3.getRadiusVector() << std::endl;
    std::cout << "Tilt angle: " << p3.getTiltAngle() << std::endl;
 
    //dynamic
    Point *pd = new Point( 5.7, 123 );
    pd->printCoordinates();
    std::cout << "Radius vector: " << pd->getRadiusVector() << std::endl;
    std::cout << "Tilt angle: " << pd->getTiltAngle() << std::endl;
    delete pd;
    return 0;
}
1
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
16.12.2010, 22:22  [ТС] #3
помогите сделать еще эту задачу! Пожалуйста!



Классом-потомком для точки объявите класс «Вектор», полями которого являются координаты начала и конца. Определите конструктор произвольного вектора. Создайте методы для определения длины вектора на плоскости, умножение вектора на число, вывода координат и параметров вектора на экран. Перегрузите операцию сложения и нахождения скалярного произведения двух векторов на плоскости.
Объявите объекты класса-потомка и вызовите созданы методы для векторов с такими координатами начала и конца (А и В):
1) A (0,3), B (- 3,3);
2) A (- 4,0), B (- 2,1);
3) A (1,2), B (- 2, - 2);
4) A (2,0), B (2, - 2).
Дано два вектора АВ и СD, причем А (-1, 2), В (-4, 5), С (-1; -2), D (2, 1 Определите, перпендикулярные они друг другу или нет?

Добавлено через 59 минут
reich, Создайте класс Точка
помогите пожалуйста
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
16.12.2010, 22:28 #4
Цитата Сообщение от vden23 Посмотреть сообщение
Классом-потомком для точки объявите класс «Вектор», полями которого являются координаты начала и конца.
Не совсем понимаю эту часть задания. Как из одной точки можно получить вектор путем наследования?
0
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
16.12.2010, 22:38  [ТС] #5
Цитата Сообщение от reich Посмотреть сообщение
Point p1;//0:0
Point p2( 10 ); //10:0
Point p3( 13, 24 ); //13:24
в этой части выбивает ошибка "Point:: Point ()-is not accessible"
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
16.12.2010, 22:39 #6
Цитата Сообщение от vden23 Посмотреть сообщение
в этой части выбивает ошибка "Point:: Point ()-is not accessible"
значит что-то не правильно переписали
0
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
16.12.2010, 22:45  [ТС] #7
Цитата Сообщение от reich Посмотреть сообщение
е совсем понимаю эту часть задания. Как из одной точки можно получить вектор путем наследования?
первый вариант - можно взять две точки из класса Point. одни из которых будет начало а другая конец вектора.
второй вариант-взять точку из класса Point как начало вектора ... а точку конца вектора взять любую.

можно любым вариантом выполнять задания. но лучше было бы первым вариантом

Добавлено через 1 минуту
Цитата Сообщение от reich Посмотреть сообщение
значит что-то не правильно переписали
все верно переписал. проверил 2 раза
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
16.12.2010, 22:47 #8
В какой именно строке ошибка? И скопируйте сюда полностью ошибку
0
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
16.12.2010, 22:56  [ТС] #9
Цитата Сообщение от reich Посмотреть сообщение
В какой именно строке ошибка? И скопируйте сюда полностью ошибку
в етих 3 строках
Point p1;//0:0
Point p2( 10 ); //10:0
Point p3( 13, 24 ); //13:24
в каждам одна и таже ошибка
'Point::Point()' is not accessible
вторая ошибка
Destructor for 'Point" is nit accessible

Добавлено через 4 минуты
а как со второй задачей?
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
16.12.2010, 23:00 #10
Цитата Сообщение от vden23 Посмотреть сообщение
в етих 3 строках
Point p1;//0:0
Point p2( 10 ); //10:0
Point p3( 13, 24 ); //13:24
в каждам одна и таже ошибка
'Point::Point()' is not accessible
вторая ошибка
Destructor for 'Point" is nit accessible

Добавлено через 4 минуты
а как со второй задачей?
Каким компилятором Вы пользуетесь?
0
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
16.12.2010, 23:16  [ТС] #11
а как понять каким компилятором я пользуюсь?

Добавлено через 12 минут
забудьте за цю помилку я розберусь. допоможіть пліз із другим завданням класом нащодком

лассом-потомком для точки объявите класс «Вектор», полями которого являются координаты начала и конца. Определите конструктор произвольного вектора. Создайте методы для определения длины вектора на плоскости, умножение вектора на число, вывода координат и параметров вектора на экран. Перегрузите операцию сложения и нахождения скалярного произведения двух векторов на плоскости.
Объявите объекты класса-потомка и вызовите созданы методы для векторов с такими координатами начала и конца (А и В):
1) A (0,3), B (- 3,3);
2) A (- 4,0), B (- 2,1);
3) A (1,2), B (- 2, - 2);
4) A (2,0), B (2, - 2).
Дано два вектора АВ и СD, причем А (-1, 2), В (-4, 5), С (-1; -2), D (2, 1 Определите, перпендикулярные они друг другу или нет?


первый вариант - можно взять две точки из класса Point. одни из которых будет начало а другая конец вектора.
второй вариант-взять точку из класса Point как начало вектора ... а точку конца вектора взять любую.

можно любым вариантом выполнять задания. но лучше было бы первым вариантом
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
16.12.2010, 23:19 #12
погоди немного.
0
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
16.12.2010, 23:26  [ТС] #13
ок)))
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
16.12.2010, 23:53 #14
Вот тебе класс вектор
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
class Vector: public Point {
public:
    Vector( double __x1, double __y1, double __x2, double __y2 ): 
      Point( __x2 - __x1, __y2 - __y1 ), x1( __x1 ), y1( __y1 ), x2( __x2 ), y2( __y2 ){
    }
    ~Vector(){}
 
public:
    double getLength() const{
        return sqrt( pow( getX(), 2 ) + pow( getY(), 2 ) );
    }
    void multiplication( double a ){
        x1 *= a;
        y1 *= a;
        x2 *= a;
        y2 *= a;
        setX( x2 - x1 );
        setY( y2 - y1 );
    }
    void printInfo(){
        std::cout << "Vector [" << x1 << "," << y1 << "]:[" << x2 << "," << y2 << "]. Length: " << getLength() << std::endl;
    }
 
    Vector operator + ( const Vector &v ){
        double tx1 = 0, ty1 = 0, tx2 = 0, ty2 = 0;
        tx1 = x1 + v.x1;
        ty1 = y1 + v.y1;
        tx2 = x2 + v.x2;
        ty2 = y2 + v.y2;
        return Vector ( tx1, ty1, tx2, ty2 );
    }
 
    Vector operator * ( const Vector &v ){
        double tx1 = 0, ty1 = 0, tx2 = 0, ty2 = 0;
        tx1 = x1 * v.x1;
        ty1 = y1 * v.y1;
        tx2 = x2 * v.x2;
        ty2 = y2 * v.y2;
        return Vector ( tx1, ty1, tx2, ty2 );
    }
public:
    double x1, x2, y1, y2;
 
};
Вот так использовать:
C++
1
2
3
4
5
6
7
int main(int argc, char *argv[]){
    Vector v1 ( 10, 12, 65, 23 );
    Vector v2 ( 18, 13, 98, 12 );
    Vector v3 = v1 + v2;
    Vector v4 = v3 * v1;
    return 0;
}
Остальное либо сам додумай, либо завтра я напишу. Пошел спать
1
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
17.12.2010, 01:24  [ТС] #15
ок. большое спасибо

Добавлено через 5 минут
а можно пожалуйста объединить эти две задачи. насколько я знаю если есть класс потомок то нужно ставить не private a protected.

Добавлено через 2 минуты
Цитата Сообщение от reich Посмотреть сообщение
Каким компилятором Вы пользуетесь?
у меня обычная консоль с + +. выглядит она как ТурбоПаскаль. больше я незнаю как охарактеризовать свой компилятор! возможно поэтому и выбивает ошибку. потому что у нас разные компиляторы?

Добавлено через 1 минуту
Цитата Сообщение от reich Посмотреть сообщение
Остальное либо сам додумай, либо завтра я напишу
что вы имели в виду когда писали другое сделаешь сам. что там недоделано?

Добавлено через 1 час 14 минут
Цитата Сообщение от reich Посмотреть сообщение
double getLength() const{
return sqrt( pow( getX(), 2 ) + pow( getY(), 2 ) );
а што значить здесь getX i getY ???
0
17.12.2010, 01:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2010, 01:24
Привет! Вот еще темы с ответами:

Создать класс Point и производный класс ColoredPoint (цветная точка) - C++
Создайте класс Point (точка на плоскости), характеризующийся двумя координатами. Создайте производный класс ColoredPoint (цветная точка), в...

Класс "Точка". Функция - определение в каком координатном угле находится точка - C++
1. Определить в глобальной области видимости функцию в соответствии с вариантом. Доступ к полям класса осуществить с помощью...

Класс двумерная точка и класс многоугольник - C++
Всем привет Ну с двумерной точкой всё более- менее ясно. Вот набросок class DOT2 { int x, y; public: DOT2* next;

Создайте класс String - C++
Создайте класс String с операциями +, +=, =, ==, !=, &gt;, &lt;, &gt;=, &lt;=


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

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

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