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

Создать класс дробей

08.11.2022, 16:59. Показов 438. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать класс дробей. Членами класса являются числитель и знаменатель. Методами класса есть: ввод дроби с клавиатуры; вывод дроби на экран; вычисление и вывод значения дроби. Дополнить класс перегруженными операциями "+", "-", "*", "/". Написать программу, демонстрирующую работу с классом.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2022, 16:59
Ответы с готовыми решениями:

Создать класс ДРОБЕЙ рациональных чисел
Создать класс ДРОБЕЙ рациональных чисел, является отношением двух целых чисел. Перезагрузить операции для сложения, вычитания, умножения и...

Класс дробей
Кто-нибудь может проверить код (программа производит операции с дробями, сокращает их, проверяет на переполнение и переопределяет...

Определите класс дробей. Определите класс дробей
Привет всем, подходит время сессии) должки нужно закрывать нужно решить гиганское количество задач по c++ на классы, кто хорошо разбирается...

2
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
08.11.2022, 18:36
См. ссылки внизу страницы
например
Разработать класс рациональных дробей
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.11.2022, 21:16
Цитата Сообщение от iraaaaaaaaaaaa Посмотреть сообщение
Методами класса есть: ввод дроби с клавиатуры; вывод дроби на экран;
Нет. Не есть. Не надо выводить класс через его методы.
Достаточно написать оператор вывода для этого класса.

Я сегодня в чьем-то коде увидел constexpr и теперь весь день его пихаю куда только можно.
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
#include <iostream>
#include <chrono>
#include <random>
 
struct Fraction {
public:
    constexpr Fraction() : numerator(0), denominator(1) {}
 
    constexpr Fraction(int number) : numerator(number), denominator(1) {}
 
    constexpr Fraction(int numerator, int denominator) : numerator(numerator), denominator(denominator) {}
 
    constexpr int getNumerator() const {
        return numerator;
    }
 
    constexpr int getDenominator() const {
        return denominator;
    }
 
private:
    int numerator;
    int denominator;
};
 
constexpr int gcd(int a, int b) {
    // no hard feelings, negative numbers...
    a = std::abs(a);
    b = std::abs(b);
    while (a != 0 && b != 0) {
        if (a > b) {
            a %= b;
        } else {
            b %= a;
        }
    }
    return a + b;
}
 
constexpr int sign(int val) {
    return (0 < val) - (val < 0);
}
 
constexpr Fraction simplify(const Fraction &f) {
    if (std::abs(f.getDenominator()) < 2) {
        return f;
    }
    int g = gcd(f.getNumerator(), f.getDenominator());
    int sgn = sign(f.getDenominator());
    return {sgn * f.getNumerator() / g, sgn * f.getDenominator() / g};
}
 
std::ostream &operator<<(std::ostream &out, const Fraction &fraction) {
    return out << fraction.getNumerator() << "/" << fraction.getDenominator();
}
 
std::istream &operator>>(std::istream &in, Fraction &fraction) {
    int numerator, denominator;
    in >> numerator >> denominator;
    fraction = {numerator, denominator};
    return in;
}
 
constexpr Fraction operator+(const Fraction &a, const Fraction &b) {
    return {a.getNumerator() * b.getDenominator() + b.getNumerator() * a.getDenominator(),
            a.getDenominator() * b.getDenominator()};
}
 
constexpr Fraction operator-(const Fraction &a, const Fraction &b) {
    return {a.getNumerator() * b.getDenominator() - b.getNumerator() * a.getDenominator(),
            a.getDenominator() * b.getDenominator()};
}
 
constexpr Fraction operator*(const Fraction &a, const Fraction &b) {
    return {a.getNumerator() * b.getNumerator(), a.getDenominator() * b.getDenominator()};
}
 
constexpr Fraction operator/(const Fraction &a, const Fraction &b) {
    return {a.getNumerator() * b.getDenominator(), a.getDenominator() * b.getNumerator()};
}
 
int main() {
    std::default_random_engine re(std::chrono::system_clock::now().time_since_epoch().count());
    std::uniform_int_distribution<int> di(-20, 20);
 
    for (int i = 0; i < 10; ++i) {
        Fraction a = {di(re), di(re)};
        Fraction b = {di(re), di(re)};
        std::cout << "Generated:\n"
                  << "    a = " << a << '\n'
                  << "    b = " << b << '\n'
                  << "    a + b = " << a + b << '\n'
                  << "    a - b = " << a - b << '\n'
                  << "    a * b = " << a * b << '\n'
                  << "    a / b = " << a / b << '\n'
                  << "  simplified:\n"
                  << "    a = " << simplify(a) << '\n'
                  << "    b = " << simplify(b) << '\n'
                  << "    a + b = " << simplify(a + b) << '\n'
                  << "    a - b = " << simplify(a - b) << '\n'
                  << "    a * b = " << simplify(a * b) << '\n'
                  << "    a / b = " << simplify(a / b) << '\n';
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.11.2022, 21:16
Помогаю со студенческими работами здесь

Класс дробей Rational
Разработайте и протестируйте класс Rational, представляющий рациональное число (простую дробь) в виде пары целых чисел: числитель...

Класс рациональных дробей
Написать пользоват. тип рациональных дробей. Внутреннее представление типа: int a, b; должно быть таким, что число a/b должно...

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

Класс рациональных дробей RatNum
Класс RatNum имитирует работу с обычными дробями. Полями этого класса должны быть два поля типа int: числитель и знаменатель дроби....

Разработать класс рациональных дробей
азработать класс рациональных дробей. Предусмотреть в нём все методы, которые необходимы, чтобы новый тип данных мог быть использован...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru