Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 06.02.2015
Сообщений: 17

Класс "Несократимая дробь"

06.02.2015, 20:01. Показов 5288. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать класс "несократимая дробь" (т.е дробь 2/4, 4/8 и есть 1/2
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2015, 20:01
Ответы с готовыми решениями:

Как написать класс «несократимая дробь» (т.е. дроби 2/4, 4/8 и т.п. есть дробь 1/2)?
Я только начанаю знакомство с C++. В классе реализовать следующие методы: конструкторы (по умолчанию, с параметрами, копирования), ввод с...

Несократимая дробь ,представленная двумя длинными целыми:числитель и знаменатель
Несократимая дробь ,представленная двумя длинными целыми:числитель и знаменатель. Написать программу с использованием классов. #include...

Класс: Создать класс дробь - рациональных чисел, являющихся отношением двух целых чисел...
Создать класс дробь - рациональных чисел, является отношением двух целых чисел. Определить необходимые методы, конструкторы, деструкторы....

3
Заблокирован
06.02.2015, 20:08
nata80,
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
#include <iostream>
 
class Fraction
{
    public:
        Fraction( int a0, int b0 ) : a( a0 ), b( b0 )
        {
            reduce();
        }       
        void print()
        {
            std::cout << a << "/" << b << std::endl;
        }
    private:
        int a;
        int b;
        void reduce()
        {
            int m = ( a < b ? a : b );
            while ( a % m == 0 && b % m == 0 && m != 1 )
                a /= m, b /= m, --m;
        }
};
 
int main()
{
    Fraction frac( 4, 8 );
    frac.print();
    return 0;
}
как - то так
1
1 / 1 / 0
Регистрация: 06.02.2015
Сообщений: 17
11.02.2015, 11:58  [ТС]
Как добавить арифметические функции, функции ввода вывода с клавиатуры в данный класс
0
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1
11.02.2015, 12:08
Исходник остался с 3го курса
C++
1
2
3
4
5
6
//#pragma once
#include <iostream>
#include <map>
#include <cmath>
#include <stack>
using namespace std;
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 "libs.h"
 
class fraction 
{
private:
    int num,     //числитель
        den;     //знаменатель
 
public:
    fraction();
    fraction(int, int = 1);
    fraction(int, int, int);
    fraction(const fraction &);
    ~fraction();
    void reduction();
    friend int gcd(int, int);
    int decomposition();
    int GetNum() const { return num; }  void SetNum(int n) { num = n; reduction(); };
    int GetDen() const { return den; }  void SetDen(int d) 
                                        {
                                            den = d; 
                                            reduction(); 
                                        };
    friend ostream& operator<<(ostream &, const fraction &);
    fraction& operator=(const fraction &right);
 
    fraction& operator+=(const fraction &right);
    friend fraction operator+(const fraction &left, const fraction &right);
    fraction& operator-=(const fraction &right);
    friend fraction operator-(const fraction &left, const fraction &right);
    fraction& operator*=(const fraction &right);
    friend fraction operator*(const fraction &left, const fraction &right);
    fraction& operator/=(const fraction &right);
    friend fraction operator/(const fraction &left, const fraction &right);
};
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
#include "fraction.h"
 
//Конструктор дроби по умолчанию
fraction::fraction()
{
    num = 0; den = 1;
    cout << "Конструктор дроби по умолчанию: " << this << endl;
}
//Конструктор дроби с заданными числителем и знаменателем
fraction::fraction(int n, int d) : num(n), den(d)
{
    reduction();
    cout << "Конструктор дроби с заданными числителем и знаменателем: " << this << endl;
}
//Конструктор дроби с заданными числителем, знаменателем и целой частью
fraction::fraction(int i, int n, int d) : num(n + i * d), den(d)
{
    reduction();
    cout << "Конструктор дроби с заданными числителем, знаменателем и целой частью: " << this << endl;
}
//Конструктор копирования дроби
fraction::fraction(const fraction &temp)
{
    num = temp.num;
    den = temp.den;
    cout << "Конструктор копирования дроби: " << this << endl;
}
//Деструктор дроби
fraction::~fraction()
{
    cout << "Деструктор дроби: " << this << endl;
}
//Сокращение дроби
void fraction::reduction()
{
    if (den == 0)
        throw "Неверное значение: знаменатель не может быть равен нулю.";
    if (den < 0) 
    { 
        num = -num; 
        den = -den; 
    }
    int nod = gcd(abs(num), abs(den));
    num /= nod;
    den /= nod;
 
}
//Наобольший общий делитель
int gcd(int n, int d)
{
    return d ? gcd(d, n % d) : n;
}
//Декомпозиция неправильной дроби на целую часть и    правильную дробь
int fraction::decomposition()
{
    int i = num / den;
    num %= den;
    return i;
}
//Вывод дроби на экран
ostream& operator<<(ostream &out, const fraction &temp)
{
    out << temp.num << " / " << temp.den;
    return out;
}
//A = B
fraction& fraction::operator=(const fraction &right)
{
    num = right.num;
    den = right.den;
    return *this;
}
//A += B
fraction& fraction::operator+=(const fraction &right)
{
    num = num * right.den + den * right.num;
    den *= right.den;
    reduction();
    return *this;
}
//C = A + B
fraction operator+(const fraction &left, const fraction &right)
{
    fraction temp(left);
    temp += right;
    return temp;
}
//A -= B
fraction& fraction::operator-=(const fraction &right)
{
    num = num * right.den - den * right.num;
    den *= right.den;
    reduction();
    return *this;
}
//C = A - B
fraction operator-(const fraction &left, const fraction &right)
{
    fraction temp(left);
    temp -= right;
    return temp;
}
//A *= B
fraction& fraction::operator*=(const fraction &right)
{
    num *= right.num;
    den *= right.den;
    reduction();
    return *this;
}
//C = A * B
fraction operator*(const fraction &left, const fraction &right)
{
    fraction temp(left);
    temp *= right;
    return temp;
}
//A /= B
fraction& fraction::operator/=(const fraction &right)
{
    num *= right.den;
    den *= right.num;
    reduction();
    return *this;
}
//C = A / B
fraction operator/(const fraction &left, const fraction &right)
{
    fraction temp(left);
    temp /= right;
    return temp;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2015, 12:08
Помогаю со студенческими работами здесь

Класс Дробь
Всем доброго времени суток.Преподаватель дал задание по изучение классов на примере простейшего-дробь.Нужно составить класс с функциями для...

Класс Рациональная дробь
Есть код, который выполняет операции между дробями (рациональное число, является отношением двух целых чисел). Никак не получается...

Класс Рациональная Дробь
Всем привет, задали задачу, помогите решить и разобраться) // Example program #include &lt;iostream&gt; using namespace std; ...

Класс рациональная дробь
Создать класс: Рациональная дробь вида m/n . Обязательны следующие методы класса :конструктор, перегруженные операторы префиксный инкремент...

Класс обыкновенная дробь
Здравствуйте помогите пожалуйста с данной задачей {deleted} П.5.19.Правил Запрещено создавать темы в виде ссылок на задания или коды...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru