|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
24.09.2015, 11:26 | #1 (permalink) |
Новичок
Регистрация: 12.07.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 1 сообщении
Репутация: 110
|
Простой калькулятор рациональных чисел на C++
Только начал изучать C++ и задали вот такое задание: Напишите программу, которая позволяет совершать математические действия (сложение, вычитание, умножение, деление, сравнение) с рациональными числами. Создайте класс для рациональных чисел.Данные класса - рациональные числа ( числитель и знаменатель). В классе должны быть такие методы: сложение, вычитание, умножение, деление, сравнение (больше, меньше, равно), отрицательное (умножение на -1). Данные методы должны возвращать рациональные числа. Операция сложения a + b при помощи этого класса будет выглядеть так: a.sloz(b); Так же в классе обязательно должны быть методы: ввод и вывод. В общем, нужно написать программу, вида: Ввожу первое рационально число (допустим, 3/4) Ввожу второе рациональное число(допустим 16/33) Выводится результат сложения, вычитания, умножения, деления, сравнения и умножения на -1 введённых рациональных чисел. С целыми числами никаких проблем нет абсолютно, довольно быстро написал консольную программу,но нужно,чтоб было с рациональными числами. Потому очень прошу помочь. Вот то,что я написал с целыми числами: Код:
#include<iostream> using namespace std; class MyCalc { private: int a; int b; public: void vvod_vivod() { cout << "Введите первое число: "; cin >> a; cout << " " << endl; cout << "Введите второе число: "; cin >> b; cout << " " << endl; } void sloz() { cout << "Сложение " << "(" << a << " + " << b << ")" << " = " << a + b << endl; } void vicit() { cout << "Вычитание " << "(" << a << " - " << b << ")" << " = " << a - b << endl; } void umnoz() { cout << "Умножение " << "(" << a << " * " << b << ")" << " = " << a * b << endl; } void delen() { cout << "Деление " << "(" << a << " / " << b << ")" << " = " << a / b << endl; } void sravn() { if (a==b) cout << a << " равно "<< b << endl; if (a<b) cout << a << " меньше "<< b << endl; if (a>b) cout << a << " больше "<< b << endl; } void otric() { cout << "Отрицательно: " << "((" << a << " * " << b << ")" << " * -1)"<< " = " << (a * b) * -1 << endl; } }; int main() { setlocale(0, ""); cout << "Калькулятор целых чисел.\n" << endl; MyCalc c1; c1.vvod_vivod(); c1.sloz(); c1.vicit(); c1.umnoz(); c1.delen(); c1.sravn(); c1.otric(); cout << " " << endl; system("pause"); return 0; } |
24.09.2015, 11:26 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Содержание вашей темы очень схоже с другими темами, можете потратить минутку и ознакомиться RPN калькулятор Помогите исправить калькулятор Calculator++ - многофункциональный калькулятор |
24.09.2015, 17:05 | #2 (permalink) |
Специалист
Регистрация: 27.04.2015
Адрес: Москва
Сообщений: 1,423
Записей в дневнике: 4
Сказал(а) спасибо: 52
Поблагодарили 53 раз(а) в 16 сообщениях
Репутация: 18120
|
А в чем сложность то ? Не умеете с дробями работать ?
Сложение / вычитание - приводим к общему знаменателю , и складываем/вычитаем числитель, если возможно сокращаем полученную дробь Умножение/деление - ну тут вообще просто - при умножение перемножаем отдельно числители и знаменатели , a/b*c/d = a*c/b*d деление просто переворачиваем вторую дробь a/b:c/d = a*d/b*c, если возможно сокращаем полученную дробь Сравнение то же не сложно, приводим к общему знаменателю и сравниваем числитель (только знак числа учесть надо) Изменить знак это то же самое что умножить на -1/1 (минус одну первую) Короче элементарная математика, класс 6-7 средней школы по моему ... |
12.10.2015, 17:21 | #3 (permalink) |
Новичок
Регистрация: 12.07.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 1 сообщении
Репутация: 110
|
Благодарю! Ваши мысли натолкнули меня на нужный лад.
Всё сделал как нужно. Благодарю за помощь |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|