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

Сумма обычных дробей

13.03.2018, 16:32. Показов 3572. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, надо написать программу по этому заданию. есть образец, по его аналогу надо написать эту. не знаю как представить сумму.
Разработать объектно-ориентированную программу для вычисления суммы обыкновенных дробей, которые должны передаваться ей через два аргумента командной строки. Результат суммирования должен отображаться строкой стандартного вывода в формате обыкновенной дроби. Во всех случаях для записи обыкновенных дроби должен применяться символьный формат, где ее числитель и знаменатель разделены знаком '/'. Программная реализация вычислений суммы должна быть основана на разработке класса обыкновенных дробей с приватными полями данных для целочисленных значений числителя и знаменателя, а также компонентным методом перегрузки оператора '+'. Конструкторы класса должны выполнять преобразования обоих операндов в указанный числовой формат обыкновенных дробей. Для приведения исходных и результирующей обыкновенных дробей к несократимому виду следует предусмотреть компонентный метод, реализующий алгоритм Евклида, и перегрузку оператора присваивания.

Образец программы
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
using std::cout;
using std::endl;
int euclide(int, int);//функция алгоритма Евклида
class Fraction {//класс обыкновенной дроби
private:
int nom; //числитель(nominator)дроби
int den; //знаменатель (denominator) дроби
public:
Fraction(char*);//символьный конструктор
Fraction(int n=0, int m=1) : nom(n), den(m) {};
Fraction operator~();//оператор дополнения
operator char*();// оператор преобразования типа записи дроби
void reduce();//метод сокращения дроби
}; // class Fraction
//конструирование дроби по символьной записи «n/m=s»
Fraction::Fraction(char* s) {
char* p = strchr(s, '/'); //адресовать '/' в символьной записи дроби
den = 1; //инициализировать знаменатель дроби
if(p != NULL) {//вычисление знаменателя дроби
*p++ = '\0'; // адресовать знаменатель и заменить '/' на '\0'
den = atoi(p); //преобразовать запись знаменателя в целое число
} // if
nom = atoi(s); //преобразовать запись числителя в целое число
}// Fraction
//оператор дополнения дроби до целого:
Fraction Fraction::operator~() {
int k = 0; //кратность знаменателя
int sign = (nom < 0) ? -1 : 1; //фиксировать знак числителя
int n = sign * nom; //модуль числителя дроби
while(k < n) //Найти наименьшее число, которое не меньше числителя
k += den; //по модулю кратно знаменателю дроби
n = (k - n); //модуль числителя дополнения
return Fraction(n * sign, den); //анонимный возврат дополнения
} // operator~
//оператор преобразования дроби в символьный формат ”n/m”
Fraction::operator char* () {
static char s[32]; //строка для символьной записи дроби
sprintf(s, "%d/%d", nom, den); //символьная запись дроби
return s; //возврат адреса символьной записи дроби
} // operator char*
//метод приведения дроби к несократимому виду
void Fraction::reduce() {
int gcd; //наименьший общий делитель (НОД)
gcd = euclide(abs(nom), den);//вычисление НОД знаменателя и модуля числителя
nom /= gcd; //сокращение числителя на НОД
den /= gcd; // сокращение знаменателя на НОД
return; //возврат из метода сокращения дроби
}// reduce
//вычисление наибольшего общего делителя НОД(m,n) по алгоритму Евклида
int euclide(int n, int m) {
int r = 1; //остаток деления
while(n != 0) {//цикл уменьшения чисел m и n
r = m % n; //найти остаток целочисленного деления m на n
m = n; //уменьшение m и n без
n = r; //изменения НОД
} // while
return(m); //возврат НОД(m,n)
} // euclide
int main(int argc, char* argv[]) {//основная функция
if(argc < 2) //проверка числа аргументов командной строки
return(puts("Usage: complement nomerator/denomerator"));
Fraction x(argv[1]); //получить исходную дробь в числовом формате
Fraction y; //инициализация дополнения конструктором по умолчанию
x.reduce();//сокращение исходной дроби
y = ~x; //вычисление дополнения дроби
cout << (char*) y << endl; //стандартный вывод дополнения дроби
return(0); //корректное завершение программы
} // main
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2018, 16:32
Ответы с готовыми решениями:

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

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

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2018, 16:32
Помогаю со студенческими работами здесь

Сумма дробей
Создать класс RatNum, который имеет два поля int — числитель и знаменатель. Создать конструктор класса и методы которые будут...

Написать калькулятор обычных дробей
Дроби -обычные, то есть (числитель/знаменатель). Операции простые (+ - * /) Максимально просто, только учусь) Спасибо за внимание!

Калькулятор обычных дробей Delphi7
Всем привет! Задание: Создание калькулятора, действия с обычными дробями. Я сделал (+,-,*,/), надо еще возведение в целую...

Сложение двух обычных (не десятичных) дробей
В textbox1 записывается дробь формата 1/2 во второй textbox тоже самое 3/4 и на выходе должна получиться дробь такого же формата(в третьем...

Создать класс для хранения обычных дробей
Здравствуйте, не могу решить задачу. Условие: Создать класс для хранения обычных дробей. Запрограммировать метод сокращения дроби....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru