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

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

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

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

16.12.2010, 20:41. Просмотров 2541. Ответов 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
17.12.2010, 09:39 #16
Цитата Сообщение от vden23 Посмотреть сообщение
ок. большое спасибо

Добавлено через 5 минут
а можно пожалуйста объединить эти две задачи. насколько я знаю если есть класс потомок то нужно ставить не private a protected.
Нет. В данном случае такого можно не делать.
Цитата Сообщение от vden23 Посмотреть сообщение
Добавлено через 2 минуты

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

что вы имели в виду когда писали другое сделаешь сам. что там недоделано?

Добавлено через 1 час 14 минут

а што значить здесь getX i getY ???
прости, забыл добавить, что я немного модифицировал класс Point.
добавил public методы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
inline double getX() const{
    return x;
}
inline double getY() const{
    return y;
}
inline void setX( double __x ){
    x = __x;
}
inline void setY( double __y ){
    y = __y;
}
Я имел ввиду, что осталось сделать вот это:

Объявите объекты класса-потомка и вызовите созданы методы для векторов с такими координатами начала и конца (А и В):
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 Определите, перпендикулярные они друг другу или нет?
1
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
17.12.2010, 14:11  [ТС] #17
можете еще сделать эту задачу?
и пожалуйста объедините все классы и main в единую программу. потому что у меня-то не выходит
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
17.12.2010, 15:14 #18
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
#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 ) );
    }
    inline double getX() const{
        return x;
    }
    inline double getY() const{
        return y;
    }
    inline void setX( double __x ){
        x = __x;
    }
    inline void setY( double __y ){
        y = __y;
    }
private:
    double x;
    double y;
};
 
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;
 
};
 
int main(int argc, char *argv[]){
    Vector v( 10, 12.3, 45.7, 65.8 );
    return 0;
}
Добавлено через 24 минуты
Это вроде правильный вариант. А то в предыдущих кажется умножение не правильно считалось.. Вобщем, математику перепроверь
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
#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 ) );
    }
    inline double getX() const{
        return x;
    }
    inline double getY() const{
        return y;
    }
    inline void setX( double __x ){
        x = __x;
    }
    inline void setY( double __y ){
        y = __y;
    }
private:
    double x;
    double y;
};
 
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 );
    }
 
    double operator * ( const Vector &v ){
        return x1 * v.x1 + y1 * v.y1;
    }
public:
    double x1, x2, y1, y2;
 
};
 
int main(int argc, char *argv[]){
    /*
    Vector v1( 0, 3, -3, 3 );
    Vector v2( -4, 0, -2, 1 );
    Vector v3( 1, 2, -2, -2 );
    Vector v4( 2, 0, 2, -2 );
    */
    Vector v6( -1, 2, -4, 5 );
    Vector v7( -1, -2, 2, 1 );
    if ( v6 * v7 == 0 ){
        std::cout << "Perpendicular" << std::endl;
    }
    return 0;
}
1
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
17.12.2010, 17:20  [ТС] #19
Цитата Сообщение от reich Посмотреть сообщение
inline double getX() const{
return x;
}
inline double getY() const{
return y;
}
inline void setX( double __x ){
x = __x;
}
inline void setY( double __y ){
y = __y;
уже же что делают эти функции?
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
17.12.2010, 17:22 #20
Цитата Сообщение от vden23 Посмотреть сообщение
уже же что делают эти функции?
присваивают значения свойствам класса и возвращают их значение
1
vden23
1 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 109
17.12.2010, 20:13  [ТС] #21
спасибо большое! все прекрасно работает)
0
RosyRose
0 / 0 / 0
Регистрация: 28.07.2012
Сообщений: 23
29.08.2012, 13:35 #22
Решаю эту же задачу,но по-своему.
Возникают проблемы при вычислении угла,нормально вычисляет угол от 0 до 90,а вот потом проблемы.
и как сделать чтобы можно было вводить отрицательные числа?
пыталась сделать проверку особых точек, т.е. когда угол 180,270,но не работает
Как объявить динамический объект по умолчанию?И объявить массив из 2-3 точек.И найти способ присвоить им значения при создании объектов в моем варианте??

function.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h> 
#include <math.h> 
#include<conio.h>
 
class Dot
{
float x;
float y;
static int k; //количество точек
 
public:
  Dot()
  { x=y=0;//конструктор по умолчанию,начало координат
  }
  Dot(float xk)//конструктор точки,лежащей на оси Ox
  {x=xk;
  y=0;
  }
  Dot(float xc, float yc) //конструктор произвольной точки
  {x=xc;
  y=yc;
  }
 // ~Dot(){}
 
 void out()//Вывод точки на экран
    {
        printf ("x=%4.2f y=%4.2f \n",x,y);
    }
 
void Out()  //Вывод точки на экран
    {
        printf ("coordinaty = %3.2f ,%3.2f\n",x,y);
    }
void Vvod()
     {
         printf("\nVvedite koordinati tochki\n");
         scanf("%f,%f",&x,&y);
     }
 
double Radiyc()
    {  
        double r=sqrt(x*x+y*y);
        return r;
    }
 
double ygol()
    { static double Pi=3.1415926535897932384626433832795;
        double yg;
       double tg=y/x;
      yg=(atan(tg)*180)/Pi;
       return yg;
    }
};
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
#include <stdio.h> 
#include <conio.h>  
#include <math.h> 
#include "function.h"
 
int Dot :: k=0;
void main (void)
{
     Dot A;//по умолчанию
     A.out();
     printf("\nRadiyc = %.2f\n", A.Radiyc());
     printf("\nYgol = %.2f\n", A.ygol());
     
     Dot B(2);
     B.out();
     printf("\nRadiyc = %.2f\n", B.Radiyc());
     printf("\nYgol = %.2f\n", B.ygol());
    
     Dot C;
     C.Vvod();
     C.out();
     printf("\nRadiyc = %.2f\n", C.Radiyc());
     printf("\nYgol = %.2f\n", C.ygol());
//  Dot*d = new Dot;
     //A.Vvod();
//  A.out();
getch();
}
0
29.08.2012, 13:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 13:35
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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