Форум программистов, компьютерный форум 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. Одномерный массив Сортировка массива Дан целочисленный массив А. Отсортируйте по возрастанию те его элементы ,которые входят во введенный отрезок 6. Двумерный массив
C++ Не работает вход в цикл в игре двадцать одно http://www.cyberforum.ru/cpp-beginners/thread322019.html
Программа для игры в 21. Возникла проблема в механизме досдачи карт( насколько я понял, не входит в цикл, котоый выводит новые карты и считает новый счет пользователя). Вот текст программы : #include <iostream> #include <cstdlib> #include <string.h> #include <ctime> #include <vector>
C++ Алгоритм перебора Всем доброго времени суток! Уважаемые форумчане подскажите алгоритм полного перебора, можно без кода, лишь ход действий. Конкретнее. В кармане некоторое количество монет. Какие суммы денег возможны из данного количества. Например: есть 3 монеты. Возможны варианты: 1+1+5=7 копеек, 5+10+10=25 копеек и т.п. Вынес себе весь мозг, так ниче и не придумал. Пробовал разные варианты но все не то. Если... подробнее

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