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

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

Войти
Регистрация
Восстановить пароль
 
19dimych94
0 / 0 / 0
Регистрация: 28.09.2012
Сообщений: 7
#1

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

18.02.2013, 17:03. Просмотров 636. Ответов 6
Метки нет (Все метки)

Разработать класс Point для работы с объектами типа точка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, определяющую расстояние между двумя точками.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 17:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа с классом Point (C++):

программа с классом - C++
Помогите пожалуйста с программой, в которой класс sphere представляет шары. Конструктор с параметрами позволяет задать номер, цвет и радиус...

Программа с массивом и классом - C++
Добрый день. Нужно написать программу. Если пользователь вводит 1 - даем ему записать марку машины. Если пользователь вводит 2 - пишет...

Программа с классом и объектами. - C++
Дана символьная матрица размера 4 х 5. Из последовательности её строк сформировать новую строку и определить ее длину. Проверить наличие...

Программа с классом треугольник - C++
Дали задачу написать программу с классом треугольника. А именно нужно: задать стороны треугольника, по этим сторонам определить углы...

Программа с классом и объектами!!!))) - C++
Всем привет)Помогите пожалуйста исправить программку так,что бы она была с классом и объектами!!!))) Задание: Ввести несколько строк...

программа с массивом и классом..... - C++
Написал часть программы для составления некой базы 15 книг, где будет записано название книги и издательство, компилировал нету ошибок, но...

6
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
18.02.2013, 17:11 #2
Эта задача уже решалась на форуме в различных ипостасях. Достаточно воспользоваться поиском.

Цитата Сообщение от 19dimych94 Посмотреть сообщение
функции-члены, которые обеспечивают ввод/вывод элементов класса
Задание откровенно учит быдлокодить, это грустно.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
18.02.2013, 17:29 #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Задание откровенно учит быдлокодить
а можешь пояснить в чем былокод, на твой взгляд, при обеспечении доступа к некоторым полям класса, с помошью getteroв\setterов
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
18.02.2013, 21:45 #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;
}
2
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
18.02.2013, 22:31 #5
Kuzia domovenok, возможно ты прав, что автор имел ввиду именно это, но вот
1)обеспечивают ввод/вывод элементов класса,
2) а также доступ к закрытым членам класса.
тут скорее наоборот , 1 это быдлокод который, ты привел, а вот 2 сеттеры\геттеры ну в книгах я не видел чтоб такие примеры были, чтоб функция-член выводила в консоль, только если не перегрузка,или показать последовательность вызова методов( родитель, дочерний)
1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
18.02.2013, 22:42 #6
Цитата Сообщение от Nixy Посмотреть сообщение
тут скорее наоборот
Да, конечно, я поменял местами зачем-то.
Цитата Сообщение от Nixy Посмотреть сообщение
ну в книгах я не видел чтоб такие примеры были, чтоб функция-член выводила в консоль
Зато я довольно часто видел такое в заданиях преподов. Вот и сейчас.

Это только один из примеров. Ещё чаще встречаю такую тему
Лабораторная работа.
Разработать класс Point для работы с объектами типа точка на плоскости.
Разработать наследуемый от Point класс Line, добавляющий к точке координаты второго конца отрезка
И такие маразмы реально присутствуют в некоторых курсах. Могу привести ссылки с темами на этом форуме.
0
daslex
1271 / 515 / 106
Регистрация: 02.08.2011
Сообщений: 2,706
19.02.2013, 01:17 #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;
}

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2013, 01:17
Привет! Вот еще темы с ответами:

Программа с использованием дружественных функций и классов. Создайте программу с классом student - C++
19..Разработайте алгоритм и создайте программу с использованием дружественных функций и классов. ЯЗЫК С++ Создайте программу с классом...

Программа взаимодействует с классом исключительно через интерфейс. Однажды класс меняется и меняется его хидер. Надо ли перекомпилировать всю программ - C++
Программа взаимодействует с классом исключительно через интерфейс. Однажды класс меняется и меняется его хидер. Надо ли перекомпилировать...

работа с классом - C++
Разработайте класс, моделирующий рациональные числа как несократимые дроби, включающий числитель Num и знаменатель Den. Предусмотрите...

Ошибка с классом. - C++
Здравствуйте. Возникла проблема с классом. http://codepad.org/XpTrKcAC В чем может быть проблема?


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

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

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