Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
0 / 0 / 1
Регистрация: 27.05.2012
Сообщений: 26

Полиморфизм, Точка в трёхмерном пространстве

11.01.2013, 00:49. Показов 6514. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание 1.
1. Опишите класс "Точка в 3-хмерном пространстве".
Данные класса:
координаты точки, цвет.
Конструкторы класса:
конструктор по умолчанию, конструктор произвольной точки.
2.Определите методы:
ввод точки, вывод на экран, определение расстояния от точки до начала координат.
3. Объявите несколько объектов с использованием различных конструкторов, найдите их расстояния от начала координат.
Задание 2.
1. Опишите класс "Материальная точка", производный от точки, имеющий собственное данное - масса.
2. Определите конструкторы матер. точки по умолчанию и с параметрами.
3.Определите метод сравнения масс материальных точек.
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
51
52
53
54
55
56
57
58
#include <conio.h>
//Задание 1 "Точка в трёхмерном пространстве".
class Point {
    float x,y,z; //координаты точки
    char colour[n]; //цвет
public: 
    Point() { //Конструктор по умолчанию.
            x=y=z=0;
            //char colour[9] = "white";
        }
     // Конструктор для Point.
        Point(float a, float b, float c) {
            x = a;
            y = b;
            z = c;
        }
     void print() //Вводим координаты точки.
    {
    printf("\nВведите координаты\n");
    
    scanf("%f", &x);
    printf("\n");
    scanf("%f", &y);
    printf("\n");
    scanf("%f", &z);
    printf("\n");
    }
 
    void input()  //Выводим координаты точки на экран.
    {
        printf("\nКоординаты точки:\n");
        printf("%4.0f",x);
        printf("\n");
        printf("%4.0f",y);
        printf("\n");
        printf("%4.0f",z);
        printf("\n");
    }
    int rast()
    {
        return (sqrt(y*y+x*x))+z*z;
    }
};
//Задание 2 "Материальная точка".
class Point_M: public Point {
    int m; //собственное данное - масса.
public:
    Point_M(){ //конструктор по умолчанию.
    m = 0;}
    Point_M(int S){//конструктор с параметром.
    m = S; }
bool compare(int c1, int c2){ //метод для сравнения масс точек.
    if (c1 > c2)
    return 1;
    else return 0;
}
 
};
В чем заключается вопрос:
Я сомневаюсь насчет метода сравнения, можно его как-нибудь по-другому сделать(получше что ли). В задании написано сравнить несколько точек, как можно это сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.01.2013, 00:49
Ответы с готовыми решениями:

Точка в трехмерном пространстве
Помогите написать программу. Нужно реализовать точку обьект в трехмерном пространстве.

Трехмерном пространстве
В множестве А1 в трехмерном пространстве найти пару точек с максимальным расстоянием между ними(использовать структуру)

Вектор в трехмерном пространстве
Помогите, пожалуйста, с заданием. Я не знаю как это реализовать, новичок в С++. Если можно с комментариями и не сильно замудренно. ...

2
 Аватар для (SkyNet)
35 / 40 / 15
Регистрация: 25.10.2011
Сообщений: 175
11.01.2013, 02:51
C++
1
2
3
4
5
...
bool compare(Point_M& other){ //метод для сравнения масс точек.
    if (this->m > other->m)
    return 1;
    else return 0;
1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
11.01.2013, 03:29
Два в одном.
Забил на ввод, тут уж сами, вместо метода вывода -- перегруженный оператор "<<", что логичнее.
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <cstring>
#include <iostream>
#include <iomanip>
 
class Color {
 public:
  Color(int red, int green, int blue) : red(red), green(green), blue(blue) {}
  int getRed() const { return red; }
  int getGreen() const { return green; }
  int getBlue() const { return blue; }
 private:
  int red, green, blue;
};
 
std::ostream &operator<<(std::ostream &stream, const Color &color) {
  return stream << "Color{" <<
    "red=" << color.getRed() << "," <<
    "green=" << color.getGreen() << "," <<
    "blue=" << color.getBlue() << "}";
}
 
class Point {
 public:
  Point() : x(0), y(0), z(0), color(0, 0, 0) {}
  explicit Point(int maxRandom) : x(rand() % maxRandom), y(rand() % maxRandom),
    z(rand() % maxRandom), color(0, 0, 0) {}
  Point(int x, int y, int z, const Color &color) : x(x), y(y), z(z),
    color(color) {}
  Point(int x, int y, int z) : x(x), y(y), z(z), color(0, 0, 0) {}
  int getX() const { return x; }
  int getY() const { return y; }
  int getZ() const { return z; }
  const Color &getColor() const { return color; }
  double getDistanceTo(int x, int y, int z) {
    return sqrt(pow(x - getX(), 2.0) + pow(y - getY(), 2.0) +
      pow(z - getZ(), 2.0));
  }
  double getDistanceTo(const Point &other) {
    return getDistanceTo(other.getX(), other.getY(), other.getZ());
  }
 private:
  int x, y, z;
  Color color;  
};
 
std::ostream &operator<<(std::ostream &stream, const Point &point) {
  return stream << "Point{" <<
    "x=" << point.getX() << "," <<
    "y=" << point.getY() << "," <<
    "z=" << point.getZ() << "," <<
    "color=" << point.getColor() << "}";
}
 
class MassPoint : public Point {
 public:
  MassPoint() : Point() {}
  explicit MassPoint(int maxRandom) : Point(maxRandom),
    mass(rand() % maxRandom) {}
  MassPoint(int x, int y, int z, const Color &color, int mass)
    : Point(x, y, z, color), mass(mass) {}
  MassPoint(int x, int y, int z, int mass) : Point(x, y, z), mass(mass) {}
  int getMass() const { return mass; }
  int compareByMass(const MassPoint &other) const {
    return getMass() - other.getMass();
  }
  static int compareByMass(const MassPoint &a, const MassPoint &b) {
    return a.compareByMass(b);
  }
 private:
  int mass;
};
 
std::ostream &operator<<(std::ostream &stream, const MassPoint &point) {
  return stream << "MassPoint{" <<
    "x=" << point.getX() << "," <<
    "y=" << point.getY() << "," <<
    "z=" << point.getZ() << "," <<
    "color=" << point.getColor() << "," <<
    "mass=" << point.getMass() << "}";
}
 
MassPoint *getMax(MassPoint *begin, MassPoint *end,
  int (*comparator)(const MassPoint &a, const MassPoint &b)) {
  MassPoint *result = begin++;
  while (begin != end) {
    if (comparator(*result, *begin) < 0) {
      result = begin;
    }
    ++begin;
  }
  return result;
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
 
  Point origin(0, 0, 0);
  std::cout << "ORIGIN POINT: " << origin << std::endl;
 
  const int numberOfPoints = 10;
  MassPoint points[numberOfPoints];
  
  for (int i = 0; i < numberOfPoints; ++i) {
    points[i] = MassPoint(20); // òî÷êà ñî ñëó÷àéíûìè êîîðäèíàòàìè
    std::cout << points[i] << " distance to origin is " <<
      std::fixed << std::setprecision(3) <<
      points[i].getDistanceTo(origin) << std::endl;
  }
  
  std::cout << "MAX MASS POINT " << *getMax(points, points + numberOfPoints,
    MassPoint::compareByMass);
 
  std::cin.peek();
  return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.01.2013, 03:29
Помогаю со студенческими работами здесь

Точки на плоскости в трехмерном пространстве
в общем нужно проверять лежат ли 4 точки(отдельный класс состоящих из трех флоатов) в одной плоскости. Подскажите простой способ, если...

Две точки в трехмерном пространстве
В трехмерном пространстве задано две материальные точки. Определить точку, максимально удаленную от центра тяжести этих точек. Точка...

Реализация класса Vector в трехмерном пространстве
Написал код, но не получается теперь все это вывести и задать значения. #include &lt;iostream&gt;

Описать класс - объект в трехмерном пространстве + перегрузка
Класс - объект в трёхмерном пространстве. Перегрузить оператор + для этого класса, используя дружественную функцию. Перегрузить ввод. В...

Как определить пересечение 2-х треугольников в трехмерном пространстве?
Собсно сабж) Какие есть идеи?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru