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

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

Войти
Регистрация
Восстановить пароль
 
максим)
2 / 2 / 0
Регистрация: 02.10.2010
Сообщений: 36
#1

Базовый класс (точки в плоскости с целочисленными координатами) - C++

23.02.2011, 19:13. Просмотров 1031. Ответов 4
Метки нет (Все метки)

1. Класс точек
Базовый класс (точки в плоскости с целочисленными координатами):
Конструкторы: по умолчанию, с параметрами и копирования.
Деструктор.
функции:
вычисление расстояния между точками;
сложение координат 2-ух точек;
ввод, вывод на экран;
проверка идентичности точек.
дочерний класс: пиксели на экране (точки, которые имеют цвет).

Вот мой код, но кроме конструктора с параметрами других вставить не получилось, может кто-то посоветует, или подскажет
  1. 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
    
    #include <iostream.h>
    #include <conio.h>
    #include <graphics.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <dos.h>
    #include <iomanip.h>
    #include <math.h>
     
     
    class TPoint {
      protected : int x,y,x1,y1,color;
      public : TPoint(int ix, int iy,int ix1, int iy1, int icolor);
      ~TPoint();
      virtual void Draw(int c)=0;
      void Show();
      void Hide();
    };
    void TPoint::Show(){
      Draw(color);
    }
    void TPoint::Hide(){
      Draw(BLACK);
    }
    TPoint::TPoint(int ix, int iy,int ix1, int iy1,int icolor){
      x=ix;
      y=iy;
      x1=ix1;
      y1=iy1;
      color=icolor;
    }
    TPoint::~TPoint(){}
    //-------------------------------------//
    class TPixels: public TPoint{
      public : TPixels(int ix, int iy,int ix1, int iy1, int icolor);
      void Draw(int c);
      void Length();
      void Scan();
      void Plus();
     
    };
     
    TPixels::TPixels(int ix, int iy, int ix1, int iy1, int icolor):TPoint(ix,iy,ix1,iy1,icolor){}
     
    void TPixels:: Draw(int c){
      putpixel(x,y,c);
      putpixel(x1,y1,c);
    }
    void TPixels::Length(){
     int length;
     length= int(sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1)));
     cout<<" Length = "<<length;
    }
    void TPixels::Scan(){
      if ((x1==x)&&(y1==y)) cout<<" Points the same ";
      else cout <<" Points different ";
    }
    void TPixels::Plus(){
      int xnew, ynew;
      xnew=x+x1;
      ynew=y+y1;
      cout<<" New Disposition : "<<"("<<xnew<<";"<<ynew<<")";
    }
     
    //--------------------------------------//
    int main(){
      int x,y,x1,y1,color;
      int graphdriver=DETECT, graphmode;
      initgraph(&graphdriver, &graphmode, "c:\\progs\\bc31\\bgi");
      cout<<" Enter x,y,x1,y1 and color of points :";
      cout<<"\n";
      cin>>x>>y>>x1>>y1>>color;
      TPixels *p;
      p=new TPixels(x,y,x1,y1,color);
      p->Show();
      p->Length();
      cout<<"\n";
      p->Scan();
      cout<<"\n";
      p->Plus();
      getch();
      closegraph();
      return 0;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2011, 19:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Базовый класс (точки в плоскости с целочисленными координатами) (C++):

Задачка с классами (Класс точки на плоскости представлен полярными координатами) - C++
В общем такая вот задачка, кто шарит, помогите пожалуйста должны быть реализованы следующие методы: *метод инициализации Init; ...

Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника) - C++
Здравствуйте форумчане! Необходим совет) собственно задача: Многоугольник на плоскости задан целочисленными координатами своих N...

Подробно прокомментировать класс PolarCoordinates, представляющий собой класс координат точки на плоскости - C++
Написать класс PolarCoordinates, представляющий собой класс координат точки на плоскости, описанной с помощью своих полярных координат...

Создать абстрактный базовый класс объектов на декартовой плоскости CShape и разработать иерархию классов конкретных фигур - C++
Создать абстрактный базовый класс объектов на декартовой плоскости CShape (фигура). Спроектировать и реализовать иерархию классов...

Две точки на плоскости даны координатами. Выдать на экран терминала уравнение прямой линии - C++
Две точки на плоскости даны координатами. Выдать на экран терминала уравнение прямой линии.

Две точки заданы своими координатами на плоскости.определить,какая из них находится ближе к началу координат - C++
две точки заданы своими координатами на плоскости.определить,какая из них находится ближе к началу координат.пж с коментами

4
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
23.02.2011, 21:38 #2
Для затравки. С чего бы это у точки четыре координаты? За кой ляд базовому классу свойство color? И многое, много
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
#include <cstdio>
#include <cmath>
 
class Point {
 public:
  Point() : x_(0), y_(0) {}
  Point(int x, int y) : x_(x), y_(y) {}
  Point(const Point &other) : x_(other.x_), y_(other.y_) {}
  ~Point() {}
  int  x() const { return x_; }
  void x(int new_value) { x_ = new_value; }
  int  y() const { return y_; }
  void y(int new_value) { y_ = new_value; }
  float DistanceTo(const Point &other) const {
    return pow(pow(x_ - other.x_, 2.) + pow(y_ - other.y_, 2.), 2.);
  }
  virtual void Add(const Point &other) {
    x(x() + other.x());
    y(y() + other.y());
  }
  virtual bool IsEqualTo(const Point &other) const {
    return ((x() == other.x()) && (y() == other.y()));
  }
  virtual void Draw() {
    printf("(%d, %d)\n", x(), y());
  }
 private:
  int x_, y_;
};
 
class Pixel : public Point {
 public:
  Pixel() : Point(), color_(0) {}
  Pixel(int x, int y) : Point(x, y), color_(0) {}
  Pixel(int x, int y, int color) : Point(x, y), color_(color) {}
  Pixel(const Pixel &other) : Point(other), color_(other.color_) {}
  ~Pixel() {}
  int  color() const { return color_; }
  void color(int new_value) { color_ = new_value; }
  virtual void Add(const Pixel &other) {
    x(x() + other.x());
    y(y() + other.y());
    color(color() + other.color());
  }
  virtual bool IsEqualTo(const Pixel &other) const {
    return ((x() == other.x()) && (y() == other.y()) &&
            (color() == other.color()));
  }
  virtual void Draw() {
    printf("(%d, %d) : #%xd\n", x(), y(), color());
  }
 private:
  int color_;
};
 
int main(int argc, char *argv[]) {
  Pixel a(0, 0, 0xFFEEAA), b(1, 1, 0xFFEEAA);
  a.Draw();
  b.Draw();
  return 0;
}
1
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
24.02.2011, 00:18 #3
lemegeton, Дестр в базовом неплохо virtual бы...
Ну и color бы enum-ом.
Хотя дестр вирт судя по всему не нужен. Удаляется корректно.
0
максим)
2 / 2 / 0
Регистрация: 02.10.2010
Сообщений: 36
24.02.2011, 18:28  [ТС] #4
ну прост мне не кто не запрещал базовый класс сделать сразу две точки
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
24.02.2011, 21:35 #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Дестр в базовом неплохо virtual бы...
Ну и color бы enum-ом.
Хотя дестр вирт судя по всему не нужен. Удаляется корректно.
В этих классах только статические поля. Тут не нужно ни деструкторов, ни конструкторов копирования. Бы color не enum'ом, а отдельным классом с переводом в разные палитры и т.п. (А виртуальный метод Draw неплохо бы сделать например сallback'ом.) Это набросок. Для примеру.

Цитата Сообщение от максим) Посмотреть сообщение
ну прост мне не кто не запрещал базовый класс сделать сразу две точки
Ну прост это некорректная инфологическая и даталогическая модель, вводящая в заблуждение, поскольку интуитивное понимание совершенно не соответствует реализуемому функционалу.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2011, 21:35
Привет! Вот еще темы с ответами:

typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения - C++
Вот код: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;typeinfo&gt; using...

Разработать класс Point для представления точки на плоскости - C++
Разработать класс Point для представления точки на плоскости. Разработать класс, производный от класса Point. Создать гетерогенный массив...

Класс POINT (ТОЧКА), который может вводить и выводить точки с заданными координатами - C++
Создайте класс POINT (ТОЧКА), который может вводить и выводить точки с заданными координатами. Создайте 5 объектов класса POINT ...

Обработка массива точек заданных их целочисленными координатами - C++
а) удалить все точки из IV четверти б) подсчитать количество точек, лежащих на прямой y = x в) найти все наименее удалённые от начала...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
24.02.2011, 21:35
Ответ Создать тему
Опции темы

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