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

Перегрузка арифметических операций - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
JD Stive
2 / 2 / 1
Регистрация: 28.01.2010
Сообщений: 71
25.11.2010, 19:39     Перегрузка арифметических операций #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
#include <cstring>
#include <iostream>
 
class Animal
{
public:
Animal(float Mass, char* Sex, char* Color, int Age);
const float GetMass() const {return Mass;}
const char* GetSex()  const {return Sex;}
const char* GetColor()  const {return Color;}
const int GetAge() const {return Age;}
private:
int Age;
float Mass;
char* Color;
char* Sex;
};
 
Animal::Animal(float Mass, char* Sex, char* Color, int Age)
{
this->Mass=Mass;
this->Age=Age;
this->Sex=new char[strlen(Sex)+1];
strcpy(this->Sex, Sex);
this->Color=new char[strlen(Color)+1];
strcpy(this->Color, Color);
}
 
int main()
{
Animal Ob(50, "Male", "Black", 10);
std::cout<<Ob.GetMass()<<' '<<Ob.GetSex()<<' '<<Ob.GetAge()<<' '<<Ob.GetColor()<<'\n';
getchar();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2010, 19:39     Перегрузка арифметических операций
Посмотрите здесь:

C++ Расставить знаки арифметических операций так, чтобы сошелся результат
Перегрузка арифметических операций для работы с объектами классов. C++
Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 C++
C++ Калькулятор логических/арифметических операций(подробности внутри)
Реализация арифметических операций над вещественными числами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JD Stive
2 / 2 / 1
Регистрация: 28.01.2010
Сообщений: 71
02.12.2010, 20:53  [ТС]     Перегрузка арифметических операций #2
Плиз!!Помогите написать прогу!!
Joiner27
11 / 11 / 3
Регистрация: 13.11.2010
Сообщений: 65
02.12.2010, 23:23     Перегрузка арифметических операций #3
вот тебе пример перегрузки арифметических операций!

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
#include <iostream>
#include <vcl.h>
using namespace std;
class Number
{
private:
    double num;
 
public:
    Number() { }
    Number(double n): num(n) { }
    double getNum() const;
    Number operator +(const Number &);
    Number operator -(const Number &);
    Number operator *(const Number &);
    Number operator /(const Number &);
    Number &operator =(const Number &);
};
 
double Number::getNum() const
{
    return num;
}
 
Number Number::operator +(const Number &rhs)
{
    return Number (num + rhs.getNum());
}
 
Number Number::operator -(const Number &rhs)
{
    return Number (num - rhs.getNum());
}
 
Number Number::operator *(const Number &rhs)
{
    return Number (num * rhs.getNum());
}
 
Number Number::operator /(const Number &rhs)
{
    return Number (num / rhs.getNum());
}
 
Number &Number::operator =(const Number &rhs)
{
    if (this == &rhs)
        return *this;
 
    num = rhs.getNum();
 
    return *this;
}
 
int main()
{
    Number n1, n2, n3;
    n1 = 1;
    n2 = 2;
    n3 = n1 + n2;
    std::cout << "n1 = " << n1.getNum() << "\tn2 = " << n2.getNum()
    << "\tn3 = " << n3.getNum() << std::endl;
    n3 = n1 - n2;
    std::cout << "n1 = " << n1.getNum() << "\tn2 = " << n2.getNum() << "\tn3 = "
    << n3.getNum() << std::endl;
    n3 = n1 * n2;
    std::cout << "n1 = " << n1.getNum() << "\tn2 = " << n2.getNum()
    << "\tn3 = " << n3.getNum() << std::endl;
    n3 = n1 / n2;
    std::cout << "n1 = " << n1.getNum() << "\tn2 = " << n2.getNum() << "\tn3 = "
    << n3.getNum() << std::endl;
    n3=n1=n2;
    std::cout << "n1 = " << n1.getNum() << "\tn2 = " << n2.getNum() << "\tn3 = "
    << n3.getNum() << std::endl;
    std::cin.get();
    system("pause");
    return 0;
}
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
02.12.2010, 23:59     Перегрузка арифметических операций #4
Интересно... Арифметические операции относительно класса "животное" это как?
C++
1
Animal метр_колючей_проволоки = уж + еж;
Какое животное получится, если сложить пятилетнюю девяностокилограммовую гориллу и килограммового кролика?
На умножение и деление фантазия вообще разыгрывается... "Кошки размножаются умножением... Кошки размножаются умножением... Кошки размножаются умножением... ..."
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
03.12.2010, 00:35     Перегрузка арифметических операций #5
JD Stive, неплохо было бы деструктор добавить.
А то память выделяете, и не освобождаете.
JD Stive
2 / 2 / 1
Регистрация: 28.01.2010
Сообщений: 71
05.12.2010, 18:25  [ТС]     Перегрузка арифметических операций #6
lemegeton, всё в задании написано!
Цитата Сообщение от JD Stive Посмотреть сообщение
При перезгузке арифметические действия должны выполняться относительно только числовых полей!!!
Yandex
Объявления
05.12.2010, 18:25     Перегрузка арифметических операций
Ответ Создать тему
Опции темы

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