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

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

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

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

23.02.2011, 19:13. Просмотров 998. Ответов 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;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2011, 19:13     Базовый класс (точки в плоскости с целочисленными координатами)
Посмотрите здесь:

вычислите количество точек с целочисленными координатами,находящиеся в круге C++
Разработать класс Point для представления точки на плоскости C++
C++ typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения
Создать абстрактный базовый класс объектов на декартовой плоскости CShape и разработать иерархию классов конкретных фигур C++
Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника) C++
Задачка с классами (Класс точки на плоскости представлен полярными координатами) C++
C++ Две точки заданы своими координатами на плоскости.определить,какая из них находится ближе к началу координат
C++ Две точки на плоскости даны координатами. Выдать на экран терминала уравнение прямой линии
Подробно прокомментировать класс PolarCoordinates, представляющий собой класс координат точки на плоскости C++
C++ Класс POINT (ТОЧКА), который может вводить и выводить точки с заданными координатами
C++ Обработка массива точек заданных их целочисленными координатами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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;
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
24.02.2011, 00:18     Базовый класс (точки в плоскости с целочисленными координатами) #3
lemegeton, Дестр в базовом неплохо virtual бы...
Ну и color бы enum-ом.
Хотя дестр вирт судя по всему не нужен. Удаляется корректно.
максим)
2 / 2 / 0
Регистрация: 02.10.2010
Сообщений: 36
24.02.2011, 18:28  [ТС]     Базовый класс (точки в плоскости с целочисленными координатами) #4
ну прост мне не кто не запрещал базовый класс сделать сразу две точки
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
24.02.2011, 21:35     Базовый класс (точки в плоскости с целочисленными координатами) #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Дестр в базовом неплохо virtual бы...
Ну и color бы enum-ом.
Хотя дестр вирт судя по всему не нужен. Удаляется корректно.
В этих классах только статические поля. Тут не нужно ни деструкторов, ни конструкторов копирования. Бы color не enum'ом, а отдельным классом с переводом в разные палитры и т.п. (А виртуальный метод Draw неплохо бы сделать например сallback'ом.) Это набросок. Для примеру.

Цитата Сообщение от максим) Посмотреть сообщение
ну прост мне не кто не запрещал базовый класс сделать сразу две точки
Ну прост это некорректная инфологическая и даталогическая модель, вводящая в заблуждение, поскольку интуитивное понимание совершенно не соответствует реализуемому функционалу.
Yandex
Объявления
24.02.2011, 21:35     Базовый класс (точки в плоскости с целочисленными координатами)
Ответ Создать тему
Опции темы

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