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

Даны две дроби A/B и C/D (A, B, C, D – натуральные числа) Составить функцию деления этих дробей

09.02.2023, 10:33. Показов 1325. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны две дроби A/B и C/D (A, B, C, D – натуральные числа). Составить функцию деления этих дробей. Вывести числитель и знаменатель полученной дроби.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2023, 10:33
Ответы с готовыми решениями:

Даны две дроби A/B и C/D. (А, В, С, D натуральные числа). Составить программу деления дроби на дробь. Ответ должен быть несократимой дробью.
Предпочтительно в рамках VB6 (в инсте пока на нём учимся) Даны две дроби A/B и C/D. (А, В, С, D натуральные числа). Составить...

Даны две дроби A/B и C/D (А, В, С, D — натуральные числа). Составить функцию умножения дроби на дробь
Даны две дроби A/B и C/D (А, В, С, D — натуральные числа). Составить функцию умножения дроби на дробь. Ответ должен быть несократимой...

Даны две дроби, составить программу деления дроби на дробь
1. Даны две дроби A/B и C/D— (А, В, С, D — натуральные числа).Составить программу деления дроби на дробь. Ответ должен быть...

7
 Аватар для anapshy
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
09.02.2023, 10:58
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
void divideFractions(int a, int b, int c, int d) {
    int numerator = a * d;
    int denominator = b * c;
    cout << "Result: " << numerator << "/" << denominator << endl;
}
 
int main() {
    int a, b, c, d;
    cout << "Enter the first fraction: ";
    cin >> a >> b;
    cout << "Enter the second fraction: ";
    cin >> c >> d;
    divideFractions(a, b, c, d);
    return 0;
}
1
Модератор
 Аватар для long399
2882 / 1836 / 933
Регистрация: 16.10.2013
Сообщений: 5,240
Записей в блоге: 15
09.02.2023, 11:08
Как вариант:

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
#include <iostream>
 
struct fraction
{
    fraction(std::size_t _n, std::size_t _d): numerator(_n), denominator(_d){}
    fraction operator/(const fraction& rFraction)
    {
        return fraction(numerator*rFraction.denominator, denominator*rFraction.numerator);
    }
    friend std::ostream& operator<<(std::ostream &os, const fraction& fraction)
    {
        os << fraction.numerator << "/" << fraction.denominator;
        return os;
    }
 
private:
    std::size_t numerator, denominator;
};
 
int main()
{
    fraction fr1{1, 2}, fr2{5, 7};
 
    std::cout << fr1/fr2;
 
    return 0;
}
https://onlinegdb.com/KLF4XaC1D
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,405
09.02.2023, 11:27
Лучший ответ Сообщение было отмечено Royal_X как решение

Решение

Самая простая реализация с сокращением конечной дроби:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <numeric> // C++17
 
void divide(int a, int b, int c, int d)
{
    int num = a * d;
    int denom = b * c;
    int g = std::gcd(num, denom);
    num /= g;
    denom /= g;
    std::cout << "numerator = " << num << "\ndenominator = " << denom;
}
 
 
int main()
{
    int a, b, c, d;
    std::cout << "a = "; std::cin >> a;
    std::cout << "b = "; std::cin >> b;
    std::cout << "c = "; std::cin >> c;
    std::cout << "d= "; std::cin >> d;
    divide(a, b, c, d);
}
Добавлено через 52 секунды
Вариант, когда дроби известны на момент компиляции:

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <ratio>
 
int main()
{
    using ab = std::ratio<1, 2>;
    using cd = std::ratio<4, 5>;
    using quotient = std::ratio_divide<ab, cd>;
    std::cout << "numerator = " << quotient::num << "\ndenominator = " << quotient::den;
}
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,926
Записей в блоге: 5
09.02.2023, 11:28
Дробь после вычисления еще надо попытаться сократить. Т. е. возьмите где-нибудь п.п. вычисления наибольшего общего делителя, получите НОД, и если он не 1, разделите на него числитель и знаменатель.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,405
09.02.2023, 11:29
palva, в моих кодах дроби сокращены)
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,926
Записей в блоге: 5
09.02.2023, 11:34
Вообще по уму сокращение нужно делать раньше, попробовать разделить на одно и то же число сначала числители потом знаменатели. Тогда будет меньше вероятность переполнения при перемножении больших чисел.

Добавлено через 2 минуты
Royal_X, когда я писал, я еще не прочитал вас, в наших постах разница 1 минута. Я реагировал на код от anapshy,
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,405
09.02.2023, 11:35
Цитата Сообщение от palva Посмотреть сообщение
Вообще по уму сокращение нужно делать раньше, попробовать разделить на одно и то же число сначала числители потом знаменатели. Тогда будет меньше вероятность переполнения при перемножении больших чисел.
это когда пишем код для системы компьютерной алгебры, а тут мы просто привели примеры простой реализации алгоритма деления дробей)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.02.2023, 11:35
Помогаю со студенческими работами здесь

Даны две дроби A/B и C/D (A, B, C, D - натуральные числа)
Составить программу вычитания этих дробей. Результат должен быть несократимой дробью. Нашел код, но он написан на паскале. Нужен на...

Задача с использованием функции: Даны две дроби A/B и C/D (A, B, C, D — натуральные числа)
Решить задачу с использованием функции: Даны две дроби A/B и C/D (A, B, C, D — натуральные числа). Составить программу умножения дроби...

оставить программу: для деления дроби на дробь;для сложения этих дробей;для вычитания из первой дроби второй;
Даны два числа A/B и C/D(A,B,C,D-натуральные числа). Составить программу: для деления дроби на дробь;для сложения этих дробей;для вычитания...

Даны две дроби A/B и C/D. Составить программу умножения дроби на дробь.
2. Даны две дроби A/B и C/D (A, B, C, D — натуральные числа). Составить программу умножения дроби на дробь. Ответ должен быть несократимой...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
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