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

Иерархия геометрических объектов: клас точка->класс квадрат->класс прямоугольник - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массивы http://www.cyberforum.ru/cpp-beginners/thread322040.html
Help люди! Нужно создать программу находящую среди положительных чисел массива наибольшее. Элементы массива действительные числа.
C++ Найти частное двух чисел Не используя операций умножая или деления. Например X/Y Догадался только до такого способа Q - частное X,Y - числа while(X >= Y) {X=X-Y; Q++} http://www.cyberforum.ru/cpp-beginners/thread322036.html
Распечатать первые n простых чисел C++
Распечатать первые п простых чисел ( р - простое число, если р>= 2 и делится только на 1 и на себя) на C++ Именуйте темы осмысленно! Название темы должно максимально полно отражать её содержимое.
Отсортируйте по возрастанию те элементы массива, которые входят во введенный отрезок C++
Одномерный массив Преобразование массива Дан массив ,состоящий из n элементов. Преобразовать его,вставив после каждого положительного элемента максимальный элемент 5. Одномерный массив...
C++ Не работает вход в цикл в игре двадцать одно http://www.cyberforum.ru/cpp-beginners/thread322019.html
Программа для игры в 21. Возникла проблема в механизме досдачи карт( насколько я понял, не входит в цикл, котоый выводит новые карты и считает новый счет пользователя). Вот текст программы : ...
C++ Алгоритм перебора Всем доброго времени суток! Уважаемые форумчане подскажите алгоритм полного перебора, можно без кода, лишь ход действий. Конкретнее. В кармане некоторое количество монет. Какие суммы денег возможны... подробнее

Показать сообщение отдельно
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
18.06.2011, 12:59
Нельзя из точки порождать прямоугольник. Это некорректно, поскольку прямоугольник не является точкой. Прямоугольник может содержать точки. Отношение включения (has).

Ну и как бы такие задания очень просты, их проще заново написать, чем искать где-то какой-то код.

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
#include <cmath>
#include <iostream>
#include <iomanip>
 
class Point {
 public:
  Point() : x_(0.0), y_(0.0) {}
  Point(float x, float y) : x_(x), y_(y) {}
  void setX(float new_value) { x_ = new_value; }
  void setY(float new_value) { y_ = new_value; }
  const float getX() const { return x_; }
  const float getY() const { return y_; }
  friend std::ostream &operator<<(std::ostream &stream, const Point &point) {
    return stream << std::fixed << std::setprecision(2)
      << "(" << point.getX() << ", " << point.getY() << ")";
  }
 private:
  float x_;
  float y_;
};
 
class Rectangle {
 public:
  Rectangle() : a_(), b_() {}
  Rectangle(const Point &a, const Point &b) : a_(a), b_(b) {}
  const Point &getA() const { return a_; }
  const Point &getB() const { return b_; }
  virtual void setA(const Point &new_value) { a_ = new_value; }
  virtual void setB(const Point &new_value) { a_ = new_value; }
  float getSideA() {
    return std::fabs(getA().getX() - getB().getX());
  }
  float getSideB() {
    return std::fabs(getA().getY() - getB().getY());
  }
  virtual float Perimeter() {
    return (getSideA() + getSideB()) * 2.0;
  }
  virtual float Area() {
    return getSideA() * getSideB();
  }
  friend std::ostream &operator<<(std::ostream &stream,
    const Rectangle &rectangle) {
    return stream
      << rectangle.getA() << " - " << rectangle.getB();
  }
 private:
  Point a_;
  Point b_;
};
 
class Square: public Rectangle {
 public:
  Square() : Rectangle() {}
  Square(const Point &a, float side)
    : Rectangle(a, Point(a.getX() + side, a.getY() + side)) {}
  float getSide() { return std::fabs(getA().getX() - getB().getX()); }
  void setSide(float side) {
    setB(Point(getA().getX() + side, getA().getY() + side));
  }
  void setB(const Point &new_value) { /* should not be called */ }
};
 
int main(int argc, char **argv) {
  Square a(Point(0, 0), 3);
  std::cout << a << std::endl
    << "Area: " << a.Area() << ", perimeter: " << a.Perimeter() << std::endl;
  return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru