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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
тутти
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 5
#1

Ортодоксальная каноническая форма класса - C++

22.12.2010, 04:58. Просмотров 1981. Ответов 2
Метки нет (Все метки)

помогите пожалуйста. преподаватель попросил написать class point с конструктором, копир. конструктором, оперетором и деструктором и с перегрузкой операторов в координатах x,у. в С++ со всеми пояснениями и классическим оформлением
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2010, 04:58     Ортодоксальная каноническая форма класса
Посмотрите здесь:

внук родительского класса не может работать с полями дедовского класса; почему? - C++
Не всё так просто на самом деле. Непонятно, какую роль во всём этом играют шаблоны. Но к делу. Вот код: class base { public: base...

Нужен пример неизменяемого класса и класса от которого нельзя наследоваться - C++
Здравствуйте! Нужно привести пример неизменяемого класса и класса от которого нельзя наследоваться.

Ошибка при работе с объектом класса в конструкторе другого класса - C++
Имеется данный код: https://github.com/ubelian/glgame/tree/master/glgame В файле Food.cpp в конструкторе класса Food::Food() на 19...

Член класса управляемый не может относиться к типу класса неуправляемый - C++
Подскажите пожалуйста, что за ошибка "Член класса управляемый не может относиться к типу класса неуправляемый"? #include <vector> ...

С++, delete в деструкторе класса не видит переменные, создаваемые new в конструкторе класса - C++
#include "stdafx.h" #include "iostream" #include "math.h" using namespace std; class fun { double t = 0, x = 0, y = 0, z =...

Как в методе класса вызвать другой метод того же класса? - C++
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A, int B, int C)

Создать объявление класса и разработать программу-драйвер, которая продемонстрирует работу класса. - C++
Класс Triangle (треугольник). Класс хранит Декартовы координаты трех углов треугольника. Конструктор принимает три группы координат. Должны...

Изменение статического закрытого элемента данных класса посредством статической элемент-функции класса - C++
Добрый день. Не могу разобраться, как изменить закрытую статическую переменную класса. Вот код. Ошибка "unresolved external". ...

Составьте программу, выводящую на экран сообщения об отличниках класса, о средней успеваемости учащихся класса - C++
Опишите, используя структуру записи, школьный журнал. Предусмотрите в записи поля для хранения информации о фамилии учащегося, предмете,...

Как сделать членом класса экземпляр этого же класса - C++
class Operation { public: bool type; //true = operation, false = number char Operator; Operation L_Op; Operation R_Op; ...

Статическое поле класса, имеющее тип того же класса - C++
Всем доброго времени суток. Как известно, поля класса могут быть ссылками, либо указателями на тот же класс, в котором объявляются, но не...

Вызов метода внутреннего класса методом внешнего класса - C++
Не могу разобраться как реализовать вложенный класс и как его вызвать. Занимаюсь по Лафоре, про вложенные классы ничего, а задача в конце...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
22.12.2010, 05:33     Ортодоксальная каноническая форма класса #2
Достаточно стандартно?
Дробные координаты не учитываются. Если при делении координата меньше больше нуля, но меньше 1 или меньше нуля но больше -1 ответ будет 0.
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
119
120
#include <iostream>
#include <stdexcept>
 
class Point
{
public:
   Point(int x_=0, int y_=0):
   x(x_), y(y_)
   {
   }
   ~Point()
   {
   }
   Point(const Point& other)
   {
       x=other.x;
       y=other.y;
   }
   Point& operator =(const Point& other)
   {
        if(this == &other)
           return *this;
        x=other.x; 
        y=other.x;
        return *this;
    }
    const int GetX() const
    {
        return x;
    }
    const int GetY() const
    {
        return y;
    }
    void SetXY(int x_, int y_)
    {
        x=x_;
        y=y_;
    }
private: 
   int x, y;
};
 
Point operator +(const Point& first, const Point& second)
{
    int x=first.GetX()+second.GetX();
    int y=first.GetY()+second.GetY();
    return Point(x,y);
}
 
Point operator -(const Point& first, const Point& second)
{
    int x=first.GetX()-second.GetX();
    int y=first.GetY()-second.GetY();
    return Point(x, y);
}
 
Point operator *(const Point& first, const Point& second)
{
    int x=first.GetX()*second.GetX();
    int y=first.GetY()*second.GetY();
    return Point(x, y);
}
 
Point operator /(const Point& first, const Point& second)
{
    if(second.GetX() == 0)
        throw std::logic_error("Divide by zero");
    int x=first.GetX()/second.GetX();
    if(second.GetY() == 0)
        throw std::logic_error("Divide by zero");
    int y=first.GetY()/second.GetY();
    return Point(x, y);
}
 
std::ostream& operator <<(std::ostream& os, const Point& one)
{
    os<<"X: "<< one.GetX()<<'\n'
       <<"Y: "<< one.GetY()<<'\n';
    os<<'\n';
    return os;
}
 
std::istream& operator >>(std::istream& is, Point& one)
{
    int x=0, y=0;
    std::cout<<"Enter x: ";
    std::cin>>x;
    std::cout<<"Enter y: ";
    std::cin>>y;
    one.SetXY(x, y);
    return is;
}
 
int main()
{
    Point first;
    Point second;
    std::cout<<"Enter first point\n";
    std::cin>>first;
    std::cout<<"Enter second point\n";
    std::cin>>second;
    std::cout<<"Sum is\n";
    std::cout<<first+second;
    std::cout<<"Sub is\n";
    std::cout<<first-second;
    std::cout<<"Mul is\n";
    std::cout<<first*second;
    std::cout<<"Div is\n";
    try
    {
       std::cout<<first/second;
    }
    catch(const std::exception& e)
    {
       std::cerr<<e.what()<<'\n';
       return 1;
    }
    return 0;
}
тутти
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 5
22.12.2010, 10:31  [ТС]     Ортодоксальная каноническая форма класса #3
спасибо!
Ответ Создать тему
Опции темы

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