Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 29.04.2015, 10:26   #1
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
Сообщение Структура дроби

Создать структуру, которая описывает смешанную дробь. И реализуйте арифметические операции с дробями:
- сумму
- разность
- частное
- произведение
(написать соответствующие функции).

Вот наработки:
Код:
#include <iostream>
struct ratio {
	int num;
	unsigned den;
	ratio(int nw_num, unsigned nw_den) : num(nw_num), den(nw_den)
	{}
};
const ratio operator+ (const ratio& r1, const ratio& r2) {
	return ratio(r1.num * r2.den + r1.den * r2.num, r1.den * r2.den);
}

const ratio operator- (const ratio& r1, const ratio& r2) {
	return ratio(r1.num * r2.den - r1.den * r2.num, r1.den * r2.den);
}

const ratio operator* (const ratio& r1, const ratio& r2) {
	return ratio(r1.num * r2.num, r1.den * r2.den);
}

const ratio operator/ (const ratio& r1, const ratio& r2) {
	return ratio(r1.num * r2.den, r1.den * r2.num);
}
std::ostream& operator<< (std::ostream& out, const ratio& r) {
	out << r.num << '/' << r.den;
	return out;
}
int main() {
	ratio r1(-12, 7);
	ratio r2(5, 13);
	std::cout << "r1 = " << r1 << std::endl;
	std::cout << "r2 = " << r2 << std::endl;

	std::cout << "r1 + r2 = " << r1 + r2 << std::endl;
	std::cout << "r1 - r2 = " << r1 - r2 << std::endl;
	std::cout << "r1 * r2 = " << r1 * r2 << std::endl;
	std::cout << "r1 / r2 = " << r1 / r2 << std::endl;
	system("pause");
	return 0;
}
Как улучшить? Что исправить?

Последний раз редактировалось Андрей Иванов; 29.04.2015 в 10:33. Причина: Дополнение
Андрей Иванов вне форума
Старый 29.04.2015, 11:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

есть нюансик...
попробуйте сложить дроби 1/3 и 1/3

и вообще, в операция сложения/вычитания я бы вместо r1.den * r2.den использовал операцию поиска НОК
Serge_Bliznykov вне форума
Старый 29.04.2015, 12:32   #3
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
есть нюансик...
попробуйте сложить дроби 1/3 и 1/3

и вообще, в операция сложения/вычитания я бы вместо r1.den * r2.den использовал операцию поиска НОК
Как убрать этот нюанс?
И можете приведите пример операции поиска НОК кодом.
Андрей Иванов вне форума
Старый 29.04.2015, 13:03   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

У вас тут помойму обыкновенная дробь. У смешанной должно быть целое число, числитель и знаменатель.
pu4koff вне форума
Старый 29.04.2015, 13:52   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а почему поиском не воспользоваться?!

я воспользовался.
навскидку:

http://programmersforum.ru/showthread.php?t=272325
http://programmersforum.ru/showthread.php?t=149630
http://programmersforum.ru/showthread.php?t=217345

Цитата:
Сообщение от pu4koff
У вас тут, по моему, обыкновенная дробь. У смешанной должно быть целое число, числитель и знаменатель.
точно так. согласен. я это проглядел!
Serge_Bliznykov вне форума
Старый 29.04.2015, 16:13   #6
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию

Можете кодом помочь?
Андрей Иванов вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура DateTime, битовая структура prepare2die Помощь студентам 1 10.03.2015 13:32
преобразование дроби dimka123 Общие вопросы C/C++ 14 20.04.2014 17:06
дроби Alexander1205 Общие вопросы C/C++ 7 10.06.2011 20:40
Простые дроби 4aineg Паскаль, Turbo Pascal, PascalABC.NET 5 09.12.2006 15:01