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

Создать класс "точка" и производный класс "отрезок" - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.74
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
08.04.2010, 10:09     Создать класс "точка" и производный класс "отрезок" #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
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream> 
#include <complex> 
using namespace std; 
 
class tochka
{ 
private: double x1,x2,y1,y2; 
public: 
tochka (double,double,double,double); 
~tochka(); 
double d(); 
}; 
tochka ::tochka (double x1, double x2, double y1,double y2) 
{ 
tochka ::x1=xn; 
tochka ::x2=xk; 
tochka ::y1=yn; 
tochka ::y2=yk;
} 
tochka ::~tochka() 
{
}
 
 
int main() 
{ 
double xn,yn,xk,yk; 
cout<<"xn= \n"; 
cin >>xn; 
cout<<"yn= \n"; 
cin>>yn; 
cout<<"xk= \n"; 
cin>>xk;
cout<<"yk= \n";
cin>>yk;
tochka ob(x1,y1,x2,y2); 
 
system("pause"); 
return 0; 
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2010, 10:09     Создать класс "точка" и производный класс "отрезок"
Посмотрите здесь:

C++ Класс "линия" наследуется классом "отрезок"
Класс "Отрезок". Вычислить длину отрезка. C++
C++ Наследование, получить производный класс "интервал времени"
C++ Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол"
C++ Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/".
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
13.04.2010, 11:04  [ТС]     Создать класс "точка" и производный класс "отрезок" #2
ни у кого никаких мыслей нету?
нет такой функции в 2008 Visual Studio что бы длину считал по координатам?

в классе точка я правильно использовал конструкторы и диструкторы?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
13.04.2010, 12:06     Создать класс "точка" и производный класс "отрезок" #3
Почему точка на плоскости у тебя задается 4 координатами?
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
13.04.2010, 12:21  [ТС]     Создать класс "точка" и производный класс "отрезок" #4
эээээ....чёрт!
а надо 2?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
13.04.2010, 12:23     Создать класс "точка" и производный класс "отрезок" #5
Вот как это может выглядеть:
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 <iostream>
#include <cmath>
 
class point
{
protected:
    double _x, _y;
public:
    point(double xn, double yn)
        : _x(xn), _y(yn) {}
    double x() {return _x;}
    double y() {return _y;}
};
 
class intercept: public point
{
    double _x1, _y1;
    double _length;
public:
    intercept(double x0, double y0, double x1, double y1)
        : point(x0, y0), _x1(x1), _y1(y1)
    {
        _length=sqrt((_x1-_x)*(_x1-_x)+(_y1-_y)*(_y1-_y));
    }
    double x1() {return _x1;}
    double y1() {return _y1;}
    double length() {return _length;}
};
 
int main()
{
    intercept i(13, 9, 1, 4);
    std::cout << i.length() << std::endl;
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от LuBu Посмотреть сообщение
эээээ....чёрт!
а надо 2?
Естественно!
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
13.04.2010, 12:29  [ТС]     Создать класс "точка" и производный класс "отрезок" #6
intercept i(13, 9, 1, 4);

а что это за цифры?

просто мне надо использовать конструкторы и диструкторы, а я их тут вроде не вижу..(
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
13.04.2010, 12:34     Создать класс "точка" и производный класс "отрезок" #7
Это инициализация отрезка инициализирующим конструктором с четырьмя аргументами - координатами начала и конца отрезка

Добавлено через 39 секунд
Сам конструктор описан в строках 20-24

Добавлено через 2 минуты
ЗЫ. ИМХО, вести наследование отрезка от точки нет смысла. Лучше сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class intercept
{
    point   _p0, _p1;
    double  _length;
public:
    intercept(double x0, double y0, double x1, double y1)
        : _p0(x0, y0), _p1(x1, y1)
    {
        _length=sqrt((_p0.x()-_p1.x())*(_p0.x()-_p1.x())+(_p0.y()-_p1.y())*(_p0.y()-_p1.y()));
    }
    point p0() {return _p0;}
    point p1() {return _p1;}
    double length() {return _length;}
};
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
13.04.2010, 12:34  [ТС]     Создать класс "точка" и производный класс "отрезок" #8
а почему 13,9,1,4 ?

чёт я не врубаю =(

а диструкторы есть?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
13.04.2010, 12:39     Создать класс "точка" и производный класс "отрезок" #9
Цитата Сообщение от LuBu Посмотреть сообщение
а почему 13,9,1,4 ?
(13, 9) - координаты начала отрезка
(1, 4) - координаты конца отрезка

Цитата Сообщение от LuBu Посмотреть сообщение
а диструкторы есть?
Деструкторы для таких простых классов просто не нужны. Компилятор сам сгенерирует деструктор, который в свою очередь вызовет деструкторы для переменных-членов класса.

Добавлено через 1 минуту
Впрочем, если сильно хочется, можно выделить память для переменных-членов динамически, тогда и появится необходимость в деструкторах
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
13.04.2010, 12:46  [ТС]     Создать класс "точка" и производный класс "отрезок" #10
пнятно!)

только есть 1 проблема мне надо будет самому задать координаты)) но я думаю тут сам разберусь!)

Добавлено через 6 минут
спасибо!) буду пытаться разобраться дальше сам))
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
13.04.2010, 12:53     Создать класс "точка" и производный класс "отрезок" #11
просто мне надо использовать конструкторы и диструкторы, а я их тут вроде не вижу..(
Даже интересно, а какая ценность будет в определении деструктора....
Nameless One:
Приписал бы деструктор а то вдруг кто то обидится из-за его отсутствия.
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
13.04.2010, 12:55  [ТС]     Создать класс "точка" и производный класс "отрезок" #12
ну типо показать что ты знаешь как записать деструктор!)
я уже писал одну прогу для квадратного уравнения

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
#include <iostream> 
#include <complex> 
using namespace std; 
 
class uravnenie 
{ 
private: double a,b,c; 
public: 
uravnenie (double,double,double); 
~uravnenie (); 
double x1(); 
double x2(); 
}; 
uravnenie ::uravnenie (double a1, double b1, double c1) 
{ 
uravnenie ::a=a1; 
uravnenie ::b=b1; 
uravnenie ::c=c1; 
} 
uravnenie ::~uravnenie () 
{ 
} 
double uravnenie ::x1() 
{ 
return ((-b+sqrt(b*b-4*a*c))/(2*a)); 
} 
double uravnenie ::x2() 
{ 
return ((-b-sqrt(b*b-4*a*c))/(2*a)); 
} 
int main() 
{ 
double a1,b1,c1; 
cout<<"a= \n"; 
cin >>a1; 
cout<<:b= \n"; 
cin>>b1; 
cout<<"c= \n"; 
cin>>c1; 
 uravnenie ob(a1,b1,c1); 
cout<<"X1="<<ob.x1()<<" "<<"X2=" 
<<ob.x2()<<"\n"; 
system("pause"); 
return 0; 
}
тут то тоже класс простой но тем не менее заставили!((
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
13.04.2010, 12:57     Создать класс "точка" и производный класс "отрезок" #13
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Приписал бы деструктор а то вдруг кто то обидится из-за его отсутствия.

Не по теме:

Я чувствую, что от этого обижаются преподаватели LuBu...

LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
13.04.2010, 12:59  [ТС]     Создать класс "точка" и производный класс "отрезок" #14
да всё нормлаьно!) спаисбО!)))
я сам припишу если что!)
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
13.04.2010, 12:59     Создать класс "точка" и производный класс "отрезок" #15
Цитата Сообщение от LuBu Посмотреть сообщение
тут то тоже класс простой но тем не менее заставили!((
В том-то и дело, что заставили, ведь пользы от явного объявления деструктора в таком классе нет.
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
14.04.2010, 15:33  [ТС]     Создать класс "точка" и производный класс "отрезок" #16
здрасте ещё раз))
можно ещё 1 вопрос!
вот код программы тольок пользователь сам вводит координаты отрезка, я правильно всё ввёл? у меня такой бред что он пишет что x1 и x0 таких индефикаторов нет!
и ещё какой то треш выдаёт! ну Студия пишет что 6 ошибок 2 это индефикаторы и 4 какой то треш!
может подскажете чтоу меня за фэйл?(


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
#include <iostream>
#include <cmath>
#include "conio.h"
using namespace std;
 
 
 
class point
{
protected:
        double _x, _y;
public:
        point(double xn, double yn)
                : _x(xn), _y(yn) {}
        double x() {return _x;}
        double y() {return _y;}
};
 
class intercept: public point
{
        double _x1, _y1;
        double _length;
public:
        intercept(double x0, double y0, double x1, double y1)
                : point(x0, y0), _x1(x1), _y1(y1)
        {
                _length=sqrt((_x1-_x)*(_x1-_x)+(_y1-_y)*(_y1-_y));
        }
        double x1() {return _x1;}
        double y1() {return _y1;}
        double length() {return _length;}
};
 
int main()
{
    cout<<"Vvedite xn= \n";
    cin>>x0;
    cout<<"Vvedite yn= \n";
    cin>>y0;
    cout<<"Vvedite xk= \n";
    cin>>x1;
    cout<<"Vvedite yk= \n";
    cin>>y1;
 
 
        intercept i(x0,y0,x1,y1);
        std::cout << i.length() << std::endl;
        system("pause");
    return 0;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
14.04.2010, 15:35     Создать класс "точка" и производный класс "отрезок" #17
Цитата Сообщение от LuBu Посмотреть сообщение
вот код программы тольок пользователь сам вводит координаты отрезка, я правильно всё ввёл? у меня такой бред что он пишет что x1 и x0 таких индефикаторов нет!
и ещё какой то треш выдаёт! ну Студия пишет что 6 ошибок 2 это индефикаторы и 4 какой то треш!
может подскажете чтоу меня за фэйл?(
Переменные объявлять надо
LuBu
4 / 4 / 0
Регистрация: 03.12.2009
Сообщений: 71
14.04.2010, 15:37  [ТС]     Создать класс "точка" и производный класс "отрезок" #18
я совсем уже...)))) спасибО!)_))
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16821 / 5242 / 318
Регистрация: 30.03.2009
Сообщений: 14,118
Записей в блоге: 26
14.04.2010, 20:14     Создать класс "точка" и производный класс "отрезок" #19
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от LuBu Посмотреть сообщение
Создать класс "точка" и производный класс "отрезок"

Не по теме:

Извините, не удержался. Очередной случай, когда бестолковый преподаватель не имеет понятия о том, что такое объектно-ориентированное программирование. "Отрезок" не может быть производным понятием от "точки"

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2010, 21:03     Создать класс "точка" и производный класс "отрезок"
Еще ссылки по теме:

C++ Из класса "Дата" с полями день, месяц, год создать класс "Время" с дополнительными полями час, минута, секунда
C++ Класс "Графический объект", от которого будут наследоваться классы "круг" и "квадрат"
C++ Создать класс "прямоугольник" и перегрузить операцию отношения "равно"

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

Или воспользуйтесь поиском по форуму:
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
14.04.2010, 21:03     Создать класс "точка" и производный класс "отрезок" #20
Evg:
Просвистите в чем тут подвох, просто долго я не размысливал на эту тему, может что то не понял.
Наследованию данные для разумного насыщения производного поддаются,
а вот насчет функций мне не всё понятно.
По сути если иметь функцию SetPoint в базовом, в производном она уже не поможет,
потому что с помощью неё не установить вторую точку: прямой.

В целом я разделяю ваше мнение пример не куда негодится, а над нормальным преподавателю
влом подумать: за это бабло не платят.
Я тоже где то не подумав ляпнул точка->отрезок, аж стыдно.
Yandex
Объявления
14.04.2010, 21:03     Создать класс "точка" и производный класс "отрезок"
Ответ Создать тему
Опции темы

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