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

Класс, набор методов - C++

Восстановить пароль Регистрация
 
Shuh
0 / 0 / 0
Регистрация: 30.06.2010
Сообщений: 62
18.12.2010, 17:18     Класс, набор методов #1
Разработать класс, набор методов (конструктор, деструктор и указаны методы) для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Привести программу (int main), использующий объекты разработанного класса:
Объект «рационально не сократимые дробь, представленный парой целых чисел». Конструктор должен позволить создавать объекты без и с начальной инициализацией. Реализовать метод toString и EQ - преобразование дроби в символьная строка и сравнения на двух дробь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2010, 17:18     Класс, набор методов
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
18.12.2010, 19:32     Класс, набор методов #2
Цитата Сообщение от Shuh Посмотреть сообщение
преобразование дроби в символьная строка и сравнения на двух дробь
Ну и формулировочки.
Заменил сравнение соответствующими операторами.
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
121
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
 
class fraction
{
private:
        signed int _numerator;
        signed int _denominator;
public:
        fraction(void) : _numerator(0), _denominator(1) {}
        fraction(const int numerator, const int denominator)
                : _numerator(numerator), _denominator(denominator)
        { reduce(); }
        fraction& reduce()
        {
                int _gcd = gcd(_numerator, _denominator);
                _numerator /= _gcd;
                _denominator /= _gcd;
                if (_denominator<0)
                {
                        _denominator = - _denominator;
                        _numerator = - _numerator;
                }
        }
        int numerator() const { return _numerator; }
        int denominator() const { return _denominator; }
 
        void set(int numerator, int denominator)
        {
                _numerator = numerator;
                _denominator = denominator;
                reduce();
        }
 
        signed int compare(const fraction& other)
        {
                int _cmp_left = numerator()*other.denominator();
                int _cmp_right = other.numerator()*denominator();
                return _cmp_left-_cmp_right;
        }
 
        string toString() const
        {
                std::stringstream ss;
                ss << _numerator << "/" << _denominator;
                std::string str;
                ss >> str;
                return str;
        }
        operator string() const { return toString(); }
        operator double() const { return static_cast<double>(_numerator)/_denominator; }
 
 
        friend ostream& operator<<(ostream& o, const fraction& other)
        {
                o << other.toString();
                return o;
        }
 
        bool operator==(const fraction& other) { return compare(other)==0; }
        bool operator!=(const fraction& other) { return compare(other)!=0; }
        bool operator< (const fraction& other) { return compare(other)<0;  }
        bool operator> (const fraction& other) { return compare(other)>0;  }
        bool operator<=(const fraction& other) { return compare(other)<=0; }
        bool operator>=(const fraction& other) { return compare(other)>=0; }
 
        fraction operator-()
        {
                fraction result(-numerator(), denominator());
                return result;
        }
 
        fraction operator+(const fraction& other)
        {
                fraction result(numerator()*other.denominator()
                                +other.numerator()*denominator(),
                                denominator()*other.denominator());
                return result;
        }
        fraction operator-(const fraction& other)
        {
                fraction result(numerator()*other.denominator()
                                -other.numerator()*denominator(),
                                denominator()*other.denominator());
                return result;
        }
        fraction operator*(const fraction& other)
        {
                fraction result(numerator()*other.numerator(),
                                denominator()*other.denominator());
                return result;
        }
        fraction operator/(const fraction& other)
        {
                fraction result(numerator()*other.denominator(),
                                denominator()*other.numerator());
                return result;
        }
};
 
int main()
{
        fraction a(4, 6);
        fraction b(5, 10);
        fraction c;
        c = b-a;
 
        cout << "a=" << a << endl
        << "b=" << b << endl
        << "c=b-a=" << c << endl
        << "c>a is " << ((c>a)?"true":"false") << endl
        << "a>b is " << ((a>b)?"true":"false") << endl;
        cout << c.toString() << endl;
        cout << static_cast<double>(c) << endl;
        return 0;
}
Yandex
Объявления
18.12.2010, 19:32     Класс, набор методов
Ответ Создать тему
Опции темы

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