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

Определение классов - C++

Восстановить пароль Регистрация
 
L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
13.11.2012, 21:04     Определение классов #1
Определить классы, описывающие точку в полярной и декартовой системах координат. Составить и протестировать функции для:
а) получения декартовых координат точки, если заданы ее полярные координаты;
б) вычисления расстояния между двумя точками, заданными в декартовой системе координат;
в) получения полярных координат точки, если заданы ее декартовы координаты;
г) вычисления расстояния между двумя точками, заданными в полярной системе координат.
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 "math.h"
#include <iostream>
 
 
using namespace System;
using namespace Math;
 
double polindec(double *r,double *f)
{
  return r*math::()
}
 
class Decart
{
public:
    double x,y;
};
 
class Polar
{
public:
    double r,f;
};
int main()
{
    Decart *ptr=new Decart();
    return 0;
}
Вот я начал а незнаю правильно ли это и как продолжить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
13.11.2012, 21:36     Определение классов #2
C++
1
return r*math::()
Что это??

Предположим, классы точек у вас уже есть.

Цитата Сообщение от L.Lawliet Посмотреть сообщение
а) получения декартовых координат точки, если заданы ее полярные координаты;
C++
1
2
3
4
5
6
Polar GetPolar(const Decart & Point)
{
    Polar polarPolint;
    // тут пересчитать координаты
    return polarPoint;
}
Цитата Сообщение от L.Lawliet Посмотреть сообщение
б) вычисления расстояния между двумя точками, заданными в декартовой системе координат;
C++
1
2
3
4
double Distance(const Decart & Point1, const Decart & Point2)
{
    return sqrt( (Point1.x - Point2.x) * (Point1.x - Point2.x) + (Point1.y - Point2.y) * (Point1.y - Point2.y) )
}
L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
13.11.2012, 22:53  [ТС]     Определение классов #3
Цитата Сообщение от John Prick Посмотреть сообщение
1
return r*math:)
Что это??
это я хотел функцию перевода из полярной в декартовую сделать

Добавлено через 3 минуты
Цитата Сообщение от John Prick Посмотреть сообщение
2
3
4
5
6
Polar GetPolar(const Decart & Point)
{
* * Polar polarPolint;
* * // тут пересчитать координаты
* * return
в смысле пересчитать?
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
13.11.2012, 22:56     Определение классов #4
Ну как там координаты из одной систему в другую пересчитываются? Это математика уже, не программирование.
L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
13.11.2012, 23:07  [ТС]     Определение классов #5
Цитата Сообщение от John Prick Посмотреть сообщение
Polar GetPolar(const Decart & Point)
{
* * Polar polarPolint;
* * // тут пересчитать координаты
* * return polarPoint;
}
ну просто я в ооп не разбираюсь
как там их пересчитать допустим формула такая r=2x и f=2y
и куда его в мой код пихать?
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
13.11.2012, 23:13     Определение классов #6
Цитата Сообщение от L.Lawliet Посмотреть сообщение
допустим формула такая r=2x и f=2y
Ну что-то я сомневаюсь, что она такая, ну да ладно.
C++
1
2
3
4
5
6
7
Polar GetPolar(const Decart & Point)
{
    Polar polarPolint;
    polarPoint.r = 2 * Point.x;
    polarPoint.f = 2 * Point.y;
    return polarPoint;
}
Добавлено через 37 секунд

Не по теме:

Цитата Сообщение от L.Lawliet Посмотреть сообщение
ну просто я в ооп не разбираюсь
Если честно, до ооп тут ещё как до луны.

L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
13.11.2012, 23:17  [ТС]     Определение классов #7
а обратное ?
получения декартовых координат точки, если заданы ее полярные координаты;
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
13.11.2012, 23:33     Определение классов #8
Ну попробуй сам сообразить. По-моему, всё очевидно уже.
L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
13.11.2012, 23:38  [ТС]     Определение классов #9
а так правильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Polar
{
private:
    double r,f;
public:
    void setpoint(double cr,double cf)
    {
        r=cr;
        f=cf;
    }
    double xpolindec()
    {
        return r*cos(f);
    }
    double ypolindec()
    {
        return r*sin(f);
    }
};
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
13.11.2012, 23:43     Определение классов #10
Ну уже гораздо лучше. Сам написал?
Я бы перегрузил оператор= для этих классов, т.е.
C++
1
2
3
4
5
6
7
8
class Polar
{
    Polar & operator=(const Decart & Point)
    {
          // тут преобразовали координаты
          return *this;
    }
};
И тогда в коде было что-то типа:
C++
1
2
3
4
Decart point_1;
point_1.setpoint(20,20);
Polar point_2;
point_2 = point_1;
Простенько и хорошо читаемо.
L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
14.11.2012, 00:00  [ТС]     Определение классов #11
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
#include <iostream>
 
using std::cin;
using std::cout;
 
class Decart
{
private:
    double x1,y1,x2,y2;
public:
    void setpoint(double cx1,double cy1,double cx2=0,double cy2=0)
    {
        x1=cx1;
        y1=cy1;
        x2=cx2;
        y2=cy2;
    }
    double Distance()
    {
      return sqrt( (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) );
    }
};
 
class Polar
{
private:
    double r,f,r1,r2;
public:
    void setpoint(double cr,double cf)
    {
        r=cr;
        f=cf;
    }
    double xpolindec()
    {
        return r*cos(f);
    }
    double ypolindec()
    {
        return r*sin(f);
    }
};
 
int main()
{
    double pointx1,pointx2,pointy1,pointy2;
    Decart Dec;
    cout<<"Введите координаты x и y : ";
    cin>>pointx1>>pointy1;
    cout<<"Перевести в полярную систему координат ? 1-да 0-нет";
    int s;
    cin>>s;
    if (s=1)
    {
        Dec.setpoint(pointx1,pointy1);
    }
    cout<<"\nВведите координаты x2 и y2 : ";
    cin>>pointx2>>pointy2;
 
    return 0;
}
вот весь код. который я написал
Я не пойму что от меня хотят в задании?
Нужно ведь как то определить что хочет пользователь 1-перевести координаты из одной сист коорд 2-определить расстояние между точками
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.11.2012, 00:06     Определение классов #12
Хотят от тебя, чтобы ты реализовал функции. Пользователя пока нет никакого.
Не пихай в класс координаты второй точки. Чтобы определить расстояние, используй функцию, которую я тебе раньше писал. Только теперь не забудь определить функции доступа к Х и Y, раз уж спрятал их в private.
L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
14.11.2012, 00:12  [ТС]     Определение классов #13
Я вас непонял

C++
1
2
3
4
double Distance(const Decart & Point1, const Decart & Point2)
{
    return sqrt( (Point1.x - Point2.x) * (Point1.x - Point2.x) + (Point1.y - Point2.y) * (Point1.y - Point2.y) )
}
здесь ведь функция обращается к одному и тому же х и у

Добавлено через 28 секунд
Как я обойдусь без координат второй точки?
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.11.2012, 00:16     Определение классов #14
Ну как к одному и тому же??
Point1.x - х первой точки
Point2.x - х второй точки

Не по теме:

Если бы это был один и тот же Х, функция всегда возвращала бы 0, а я бы такую чушь никогда бы не написал.

L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
14.11.2012, 00:20  [ТС]     Определение классов #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Decart
{
private:
    double x1,y1,x2,y2;
public:
    void setpoint(double cx1,double cy1,double cx2=0,double cy2=0)
    {
        x1=cx1;
        y1=cy1;
        x2=cx2;
        y2=cy2;
    }
    double Distance(const Decart & Point1, const Decart & Point2)
{
    return sqrt( (Point1.x - Point2.x) * (Point1.x - Point2.x) + (Point1.y - Point2.y) * (Point1.y - Point2.y) )
}
};
вот так ?

Добавлено через 1 минуту
Просто когда я навожу курсор на point1.x и на point2.x показывает типа Decart;;x в обоих случаях
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.11.2012, 00:25     Определение классов #16
Цитата Сообщение от L.Lawliet Посмотреть сообщение
Просто когда я навожу курсор на point1.x и на point2.x показывает типа Decart;;x в обоих случаях
Х - поле класса Decart. Но это не значит, что это фактически одна и та же переменная. У каждого объекта это будет свой Х.

Цитата Сообщение от L.Lawliet Посмотреть сообщение
вот так ?
Так, но не совсем. У тебя поля х1, у1. Вот к ним и нужно обращаться.
И ещё, делать эту функцию в виде метода класса плохо. Если попробуешь её использовать, поймёшь почему.
L.Lawliet
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 22
14.11.2012, 00:45  [ТС]     Определение классов #17
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
#include <iostream>
 
using std::cin;
using std::cout;
 
class Decart
{   
public:
    double x1,y1;
    
    void setpoint(double cx1,double cy1)
    {
        x1=cx1;
        y1=cy1;
    }
 
};
 
double Distance(const Decart & Point1, const Decart & Point2)
{
    return sqrt( (Point1.x1 - Point2.x1) * (Point1.x1 - Point2.x1) + (Point1.y1 - Point2.y1) * (Point1.y1 - Point2.y1) );
}
 
class Polar
{
private:
    double r,f,r1,r2;
public:
    void setpoint(double cr,double cf)
    {
        r=cr;
        f=cf;
    }
    double xpolindec()
    {
      return r*cos(f);
    }
    double ypolindec()
    {
        return r*sin(f);
    }
    void showpolcor()
    {
        cout<<"В декартовой системе x="<<xpolindec()<<" \n";
        cout<<"В декартовой системе y="<<ypolindec()<<" \n";
    }
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    Polar pol;
    pol.setpoint(12,30);
    pol.showpolcor();
    Decart Point1;
    Decart Point2;
    Point1.setpoint(12,3);
    Point2.setpoint(2,6);
    cout<<"Расстояние между точками = "<<Distance(Point1,Point2)<<" \n";
    system("pause");
    return 0;
}
Вот.Как вам?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 10:07     Определение классов
Еще ссылки по теме:

C++ Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс
C++ Определение классов ссылающихся друг на друга
Насследование классов C++

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

Или воспользуйтесь поиском по форуму:
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.11.2012, 10:07     Определение классов #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
class Decart
{   
private:
    double x,y;
public:    
    Decart(void) : x(0), y(0) {}
    Decart(double X, double Y) : x(X), y(Y) {}
    void setpoint(double cx1, double cy1)
    {
        x = cx1;
        y = cy1;
    }
    double X(void) const { return x; }
    double Y(void) const { return y; }
};
 
double Distance(const Decart & Point1, const Decart & Point2)
{
    return sqrt( (Point1.X() - Point2.X()) * (Point1.X() - Point2.X()) +
                     (Point1.Y() - Point2.Y()) * (Point1.Y() - Point2.Y()) );
}
 
// ....
 
int main(void)
{
// ...
    Decart Point1(12, 3);
    Decart Point2(2, 6);
    cout<< "Расстояние между точками = " << Distance(Point1, Point2) << "\n";
// или даже так
    cout<< "Расстояние между точками = " << Distance(Decart(12,3), Decart(2, 6)) << "\n";
}
Yandex
Объявления
14.11.2012, 10:07     Определение классов
Ответ Создать тему
Опции темы

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