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

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

Войти
Регистрация
Восстановить пароль
 
 
masyk
1 / 1 / 0
Регистрация: 20.10.2012
Сообщений: 34
#1

Дописать к классу Fraction конструктор по умолчанию - C++

22.04.2013, 23:11. Просмотров 668. Ответов 17
Метки нет (Все метки)

кто может дописать к классу конструктор по умолчанию, с параметрами, копирования и деструктор
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <cstdlib>
#include <iostream>
#include <exception>
using namespace std;
class Fraction 
{
public:
    Fraction();
    Fraction(int);
    Fraction(int, unsigned int);
    
    const Fraction& operator -= (const Fraction&);
    const Fraction& operator *= (const Fraction&);
    
 
    
    friend ostream& operator << (ostream&, const Fraction&);
    friend istream& operator >> (istream&, Fraction&);
    
  
    private:
    
    unsigned int get_gcd(int, int) const;
    void reduce();
    
    unsigned int den;
    int num;
};
 
Fraction::Fraction() :
    den(1), num()
{
}
 
Fraction::Fraction(int value) :
    num(value), den(1)
{
}
 
 
 
void Fraction::reduce()
{
    int gcd = get_gcd(num >= 0 ? num : - num, static_cast<int>(den));
    den /= gcd;
    num /= gcd;
}
 
unsigned int Fraction::get_gcd(int a, int b) const
{
    if (!a)
        return b;
    if (!b)
        return a;
    return a > b ? get_gcd(a % b, b) : get_gcd(b % a, a);
}
 
ostream& operator << (ostream& stream, const Fraction& instance)
{
    stream << instance.num << (instance.den != 1 ? "/" : "");
    if (instance.den != 1)
        stream << instance.den;
    return stream;
}
 
 
 
const Fraction& Fraction::operator -= (const Fraction& instance)
{
    num = num * static_cast<int>(instance.den) - instance.num * static_cast<int>(den);
    den *= instance.den;
    reduce();
    return *this;
}
 
const Fraction& Fraction::operator *= (const Fraction& instance)
{
    num *= instance.num;
    den *= instance.den;
    reduce();
    return *this;
}
 
 
Fraction operator - (const Fraction& a, const Fraction& b) 
{
    return Fraction(a) -= b; 
}
 
Fraction operator * (const Fraction& a, const Fraction& b) 
{
    return Fraction(a) *= b; 
}
 
 
 
istream& operator >> (std::istream& stream, Fraction& instance)
{
    stream >> instance.num >> instance.den;
    if (!instance.den)
        throw std::exception();
    instance.reduce();
    return stream;
}
 
 
int main()
{
    Fraction f1, f2;
    char c;
    setlocale(LC_ALL, "Russian");
 
    bool next = true;
    while (next)
    {
   
            cout << "Введите дробь 1" << std::endl;
            cin >> f1;
            
            cout << "Введите операцию" << std::endl;
            cin >> c;
            
            cout << "Введите дробь 2" << std::endl;
           cin >> f2;
    
        
        switch (c)
        {
            
        case '-':
            cout << " Ответ: " << (f1 - f2) << endl << endl;
            break;
            
        case '*':
            cout << " Ответ: " << (f1 * f2) << endl << endl;
            break;
            
        default:
            next = false;
        }
        
        cout << "Вы хотите произвести еще одну операцию? (y / n)" << endl;
       cin >> c;
        if (c == 'n')
            next = false;
    }
    
    system("Pause");
    return EXIT_SUCCESS;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 23:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дописать к классу Fraction конструктор по умолчанию (C++):

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

Дописать классу арифметические действия - C++
Помогите. Нужно сделать сложение, вычитание, умножение и деление. #include &lt;iostream&gt; using namespace std; class ch {private: int...

Дописать функционал к классу матриц - C++
Всем привет,написал класс матриц со следующими операциями +,-,*,=,=! .Мой преподаватель говорит что нужно объявить конструкторы и...

Дописать к классу Date метод IncrementDate - C++
Используя класс Date. Изменить класс Date для включения метода IncrementDate. Он принимает положительное число дней в диапазоне 0-365,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 23:38 #2
Я могу, мысленно..
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
22.04.2013, 23:42 #3
Цитата Сообщение от masyk Посмотреть сообщение
копирования и деструктор
Не нужны, ибо - они не нужны.

Добавлено через 39 секунд
Цитата Сообщение от masyk Посмотреть сообщение
дописать к классу конструктор
А самому? Два уже есть, осталось написать еще один. Неее?
masyk
1 / 1 / 0
Регистрация: 20.10.2012
Сообщений: 34
22.04.2013, 23:43  [ТС] #4
или например розьяснить что ето
C++
1
2
3
 Fraction();
    Fraction(int);
    Fraction(int, unsigned int);
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
 private:
    
    unsigned int get_gcd(int, int) const;
    void reduce();
    
    unsigned int den;
    int num;
};
 
Fraction::Fraction() :
    den(1), num()
{
}
 
Fraction::Fraction(int value) :
    num(value), den(1)
{
}
 
 
 
void Fraction::reduce()
{
    int gcd = get_gcd(num >= 0 ? num : - num, static_cast<int>(den));
    den /= gcd;
    num /= gcd;
}
 
unsigned int Fraction::get_gcd(int a, int b) const
{
    if (!a)
        return b;
    if (!b)
        return a;
    return a > b ? get_gcd(a % b, b) : get_gcd(b % a, a);
}
немогу полностью розобратса в коде!!прокоментируйте плис
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 23:44 #5
Цитата Сообщение от nonedark2008 Посмотреть сообщение
А самому? Два уже есть, осталось написать еще один. Неее?
Скажи мне, я ничего не путаю? http://ru.wikipedia.org/wiki/%D0%9A%...BD%D0%B8%D1%8E
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
22.04.2013, 23:49 #6
Цитата Сообщение от lazybiz Посмотреть сообщение
Скажи мне, я ничего не путаю?
Эмм, я пока не понимаю, что ты собираешься путать, и что мне нужно сказать...
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 23:52 #7
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Эмм, я пока не понимаю, что ты собираешься путать, и что мне нужно сказать...
Либо я туплю под вечер, либо одно из двух.. Разве конструктор по-умолчанию это не то что компилятор создает сам?
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
22.04.2013, 23:56 #8
Цитата Сообщение от masyk Посмотреть сообщение
или например розьяснить что ето
Эмм. Если ВСЕ не понятно, то объяснять слишком долго. Возьми книжицу по C++ и почитай. Там будет все, что нужно: и классы, и конструкторы, и деструктор, и перегрузка операторов.
А потом можно открыть книжицу с алгоритмами и узнать как сокращать дроби, что такое GCD и т.д.
Кстати, метод "Я тут что-то скопировал - объясните что это такое" не поможет в понимании языка.

Добавлено через 3 минуты
Цитата Сообщение от lazybiz Посмотреть сообщение
Разве конструктор по-умолчанию это не то что компилятор создает сам?
В C++, если нет никаких других конструкторов, то компилятор вставляет свои конструкторы копирования и по умолчанию, которые ничего не делают.
А так, пользователь может сам задать конструктор по умолчанию(ака конструктор без аргументов), который делает то что ему нужно.

Не по теме:


Сам бы прочитал ссылочку, что привел. Там же все это написано... >_>

castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
23.04.2013, 00:02 #9
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Сам бы прочитал ссылочку, что привел. Там же все это написано.
В том то и дело, что у него есть конструкторы, а ты предлагаешь ему написать еще один - конструктор по-умолчанию.

Цитата Сообщение от nonedark2008 Посмотреть сообщение
... которые ничего не делают ...
Если он ничего не делает, тогда зачем он нужен?)
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
23.04.2013, 00:34 #10
Цитата Сообщение от lazybiz Посмотреть сообщение
предлагаешь ему написать еще один - конструктор по-умолчанию.
Предлагаю написать конструктор с числителем и знаменателем в качестве аргументов.
Цитата Сообщение от lazybiz Посмотреть сообщение
Если он ничего не делает, тогда зачем он нужен
Если создается переменная, и при ее инициализации не указываются параметры, то вызывается конструктор по умолчанию. Даже, если пользователь не задавал никаких конструкторов, то должен быть по крайней мере по умолчанию, хоть и фиктивный.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
23.04.2013, 00:39 #11
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Предлагаю написать конструктор с числителем и знаменателем в качестве аргументов.
Но это же не будет являться конструктором по-умолчанию.
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
23.04.2013, 00:44 #12
Цитата Сообщение от lazybiz Посмотреть сообщение
Но это же не будет являться конструктором по-умолчанию.
Я и не писал, что нужен конструктор по умолчанию. Даже скажу больше - он уже есть среди двух написанных.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
23.04.2013, 00:59 #13
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Я и не писал, что нужен конструктор по умолчанию
Ты не писал что он нужен, ТС попросил написать его, а ты предложил написать его самому. Тем самым подразумевая что он может там быть. Хотя его там быть никак не может, т.к. там уже есть конструкторы.

Цитата Сообщение от nonedark2008 Посмотреть сообщение
Даже скажу больше - он уже есть среди двух написанных.
Да нет его среди двух написаных.
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
23.04.2013, 01:03 #14
lazybiz,
Цитата Сообщение от masyk Посмотреть сообщение
Fraction::Fraction() : den(1), num() { }
Не стоит вводить других в заблуждение.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
23.04.2013, 01:07 #15
И не собирался вводить, а что это?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2013, 01:07
Привет! Вот еще темы с ответами:

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

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

Конструктор класса не видит конструктор по умолчанию другого класса - C++
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора по умолчанию, хотя он там, конечно, есть....

Конструктор по умолчанию - C++
Доброе утро! При попытке доступа к данным-элементам объекта, созданного конструктором по умолчанию, программа загибается. Возникло...


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

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

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