Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Простой калькулятор рациональных чисел на C++ (http://www.tehnari.ru/f41/t104397/)

Oxidous 24.09.2015 11:26

Простой калькулятор рациональных чисел на 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;
}


MagentaTiger 24.09.2015 17:05

А в чем сложность то ? Не умеете с дробями работать ?

Сложение / вычитание - приводим к общему знаменателю , и складываем/вычитаем числитель, если возможно сокращаем полученную дробь

Умножение/деление - ну тут вообще просто - при умножение перемножаем отдельно числители и знаменатели , a/b*c/d = a*c/b*d
деление просто переворачиваем вторую дробь a/b:c/d = a*d/b*c, если возможно сокращаем полученную дробь

Сравнение то же не сложно, приводим к общему знаменателю и сравниваем числитель (только знак числа учесть надо)

Изменить знак это то же самое что умножить на -1/1 (минус одну первую)

Короче элементарная математика, класс 6-7 средней школы по моему ...

Oxidous 12.10.2015 17:21

Благодарю! Ваши мысли натолкнули меня на нужный лад.
Всё сделал как нужно. Благодарю за помощь :)


Часовой пояс GMT +4, время: 23:28.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.