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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создайте программу с классом student, который включает в себя данные о студентах, желающих получить места в общежитии. http://www.cyberforum.ru/cpp-beginners/thread758379.html
Создайте программу с классом student, который включает в себя данные о студентах, же¬лающих получить места в общежитии. Общежитие в первую очередь предоставляется тем студентам, у кого доход на члена семьи меньше двух минимальных зарплат. Класс включает в себя следующие данные-элементы: ► ФИО студента; ► номер группы (буква и четыре цифры); ► средний балл; ► доход на одного члена семьи....
C++ Вычислить вектор a={a1,a2,.,an} Вычислить вектор a={a1,a2,...,an} , если ak=min ( xk,yk) , векторы x и y заданы. http://www.cyberforum.ru/cpp-beginners/thread758374.html
C++ Из массива X1, X2, ., X30 получить массив Y1, Y2, …, Yn
Из массива X1, X2, ..., X30 получить массив Y1, Y2, …, Yn состоящий из элементов массива X, расположенных правее его максимального элемента.
механизм перегрузки функций C++
С помощью механизма перегрузки функций реализовать функции для вывода на экран (первый параметр – тип выводимого значения (самостоятельно разработать систему обозначений)). есть впринципе готовая, но выдаёт ошибки, исправьте пожалуйста по мере возможности.. #include "string.h" #include "iostream" #include "conio.h" #include "stdlib.h" #include "stdio.h"
C++ Сумма элементов матрицы лежащие выше главной диаганали http://www.cyberforum.ru/cpp-beginners/thread758340.html
ребятки помогите
C++ Произведение двух чисел, не превосходящих 10^9 Найти произведение двух чисел, не превосходящих 10^9. Из INPUT.TXT считываются 2 числа, в OUTPUT.TXT записывается произведение. Что я делаю не так? Как сделать правильнее? #include <iostream> #include <fstream> using namespace std; unsigned long int a,b; подробнее

Показать сообщение отдельно
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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;
}
 
Текущее время: 06:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru