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

Программа с классом Point - C++

Восстановить пароль Регистрация
 
19dimych94
0 / 0 / 0
Регистрация: 28.09.2012
Сообщений: 7
18.02.2013, 17:03     Программа с классом Point #1
Разработать класс Point для работы с объектами типа точка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, определяющую расстояние между двумя точками.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 17:03     Программа с классом Point
Посмотрите здесь:

Программа на С++ ( создать класс Point) C++
C++ программа с массивом и классом.....
Программа с классом и объектами. C++
Программа с классом и объектами!!!))) C++
C++ программа с классом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
18.02.2013, 17:11     Программа с классом Point #2
Эта задача уже решалась на форуме в различных ипостасях. Достаточно воспользоваться поиском.

Цитата Сообщение от 19dimych94 Посмотреть сообщение
функции-члены, которые обеспечивают ввод/вывод элементов класса
Задание откровенно учит быдлокодить, это грустно.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
18.02.2013, 17:29     Программа с классом Point #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Задание откровенно учит быдлокодить
а можешь пояснить в чем былокод, на твой взгляд, при обеспечении доступа к некоторым полям класса, с помошью getteroв\setterов
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.02.2013, 21:45     Программа с классом Point #4
Цитата Сообщение от Nixy Посмотреть сообщение
а можешь пояснить в чем былокод, на твой взгляд, при обеспечении доступа к некоторым полям класса, с помошью getteroв\setterов
Полагаю, он имел в виду не геттеры, а такие "необходимые" члены класса
C++
1
2
3
4
5
6
7
void Point::Input(){//Как так? Все классы просто обязаны уметь управляться с вводом/выводом!
std::cout<<"input point";
std::cin>>x>>y;
}
void Point::Output(){
std::cout<<x<<y;
}
Обрати внимание на формулировку вопроса:
Определить в этом классе функции-члены, которые
1)обеспечивают ввод/вывод элементов класса,
2) а также доступ к закрытым членам класса.
То есть имелись в виду: Первое - нормальные гет/сеттеры
Второе - именно вышеприведённые быдлофункции.
В последнее время вижу всё больше быдлокодо-заданий, требующих это. От таких заданий, у учеников создаётся впечатление, что чуть ли не каждый класс должен уметь выводить себя в консоль.
Недостатки подхода очевидны: - класс становится привязанным к нюансам реализации ввода-вывода.
- Если изменить в приложении модуль ввода-вывода, придётся переписывать все классы.
- Дублируется код присвоения значений полям класса.
- Класс становится привязанным к использованию в консольных приложениях.
- классу позволяется проявить инициативу и самостоятельно залезть на экран
Короче, полное нарушение принципа "разделяй и влавствуй".
В нормальной архитектуре сам пользователь класса определяет, откуда взять данные для записи класс, а затем вызывает у него сеттер. Например,
C++
1
2
3
4
void Manager::init_Points(){
  thePoint.setX(Input_manager.getInteger());
  thePoint.setY(Input_manager.getInteger());
}
Естественно в учебных примерах такой overengineering не нужен. Но суть не меняется. В твоём примере консольного приложения этим должна заниматься функция main (или ещё какая).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* НЕ ВЕРНО
int main(){
  Point thePoint;
  MyPoint.Input();
  MyPoint.Output();
}*/
//ВЕРНО
int main(){
  int x, y;
  Point thePoint;
  cout<<"Введи x y";
  cin>>x>>y;
  thePoint.setX(x);
  thePoint.setY(y);
  cout<<thePoint.getX()<<" "<<thePoint.getY();
  return 0;
}
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
18.02.2013, 22:31     Программа с классом Point #5
Kuzia domovenok, возможно ты прав, что автор имел ввиду именно это, но вот
1)обеспечивают ввод/вывод элементов класса,
2) а также доступ к закрытым членам класса.
тут скорее наоборот , 1 это быдлокод который, ты привел, а вот 2 сеттеры\геттеры ну в книгах я не видел чтоб такие примеры были, чтоб функция-член выводила в консоль, только если не перегрузка,или показать последовательность вызова методов( родитель, дочерний)
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.02.2013, 22:42     Программа с классом Point #6
Цитата Сообщение от Nixy Посмотреть сообщение
тут скорее наоборот
Да, конечно, я поменял местами зачем-то.
Цитата Сообщение от Nixy Посмотреть сообщение
ну в книгах я не видел чтоб такие примеры были, чтоб функция-член выводила в консоль
Зато я довольно часто видел такое в заданиях преподов. Вот и сейчас.

Это только один из примеров. Ещё чаще встречаю такую тему
Лабораторная работа.
Разработать класс Point для работы с объектами типа точка на плоскости.
Разработать наследуемый от Point класс Line, добавляющий к точке координаты второго конца отрезка
И такие маразмы реально присутствуют в некоторых курсах. Могу привести ссылки с темами на этом форуме.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2013, 01:17     Программа с классом Point
Еще ссылки по теме:

C++ Программа с использованием дружественных функций и классов. Создайте программу с классом student
C++ Программа с классом треугольник
Программа с массивом и классом C++

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

Или воспользуйтесь поиском по форуму:
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
19.02.2013, 01:17     Программа с классом Point #7

Не по теме:

ТС, наверное интересно читать холивары на тему преподавания и быдло задач.



решая такую задачу можно посмотреть на this, который иногда вызывает затруднения.
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
#include <iostream>
 
class TPoint
{
    double x,y;  //х,y закрытые элементы класса 
     
public:
    TPoint():x(0),y(0){};
    
    void  GetXY(const double Tx,const double Ty); //Функция обеспечивает ввод
    void  ShowXY(); //Функция обеспечивает вывод 
    TPoint  Exchange(const double Tx,const double Ty); //Функция изменяет точку
    double len(const TPoint T2);  //Функция расичтывает длину отрезка
    
};
 
void TPoint::GetXY(const double Tx,const double Ty)
{
    x=Tx;
    y=Ty;
}
 
void TPoint::ShowXY()
{
    std::cout<<"("<<x<<":"<<y<<")\n";
}
 
 double TPoint::len(const TPoint T1)
{
    double x1=T1.x,x2=this->x;
    double y1=T1.y,y2=this->y;
    double gip=sqrt(pow(fabs(x1-x2),2)+pow(fabs(y1-y2),2));
 
 
    return gip;
}
 
 TPoint TPoint::Exchange(const double Tx,const double Ty)
 {
     std::cout<<"\nТочка была обовлена:  "<<this->x<<":"<<this->y<<"  ===>  ";
     this->x=Tx;
     this->y=Ty;
     return *this;
 }
 
int main()
{
    double x,y; //Координаты для точки
      TPoint T1,T2; //Две точки типа TPoint 
 
    
      x=20;y=30; //Ввод некоторых координат
      T1.GetXY(x,y); //Запись координат в T1
 
      x=100;y=300; //Ввод некоторых координат
      T2.GetXY(x,y); //Запись координат в T2
 
     std::cout<<"T1  "; T1.ShowXY(); //Отображаем координаты T1 на экране
     std::cout<<"T2  "; T2.ShowXY(); //Отображаем координаты T2 на экране
     std::cout<<"ДЛИНА = "<<T1.len(T2)<<"\n"; //Длина от T1 до T2
 
      //Меняем координаты выбранной  точки
      x=99.98987; //Заменяем x
      T1.Exchange(x,y);  //Функция редактирует координаты x,y конкретной Выбранной точки T1. 
      T1.ShowXY(); //Показываем обновленную точку T1
 
        std::cin.get(); 
 
    return 0;
}

Не по теме:

Есть принцип разделяй и властвуй,
а еще есть принцип от простого к сложному

Yandex
Объявления
19.02.2013, 01:17     Программа с классом Point
Ответ Создать тему
Опции темы

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