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

    Вот моя программа:

    #include <iostream>

    class fraction

    {

    public:

        int num;

        int denum;

        bool vec;

        void print()

        {

            std::cout<< this-> num << "/" << this-> denum << std::endl;

        }

        void swap (int *a, int *b)

        {

            int f;

            f= *a;

            *a = *b;

            *b = f;

        }

        int NOD(int a, int b)

        {

            int div;

            if (a<0)

                a=-a;

            if (b<0)

                b=-b;

            while (a != b)

            {

                if (a < b)

                    swap(&a,&b);

                a = a - b;

            }

            div = a;

            return div;

        }

        fraction mul (fraction arg)

        {

            fraction temp;

            temp.num = this->num * arg.num;

            temp.denum = this->denum * arg.denum;

            return temp;

        }

        fraction mul_number(fraction arg)

        {

            fraction temp;

            int integer = 2;

            temp.num = num * integer;

            temp.denum = denum;

            int common = NOD(temp.num, temp.denum);

            temp.num /=common;

            temp.denum/=common;

            return temp;

        }

        fraction del(fraction arg)

        {

            fraction temp;

            temp.num = this-> num * arg.denum;

            temp.denum = this->denum * arg.num;

            return temp;

        }

        fraction del_number(fraction arg)

        {

            fraction temp;

            int integer = 2;

            temp.num = num;

            temp.denum = denum * integer;

            return temp;

        }

        fraction del_number_two(fraction arg)

        {

            fraction temp;

            int integer = 2;

            temp.num = denum * integer;

            temp.denum = num;

            return temp;

        }

        fraction add(fraction arg)

        {

            fraction temp;

            temp.num = (this ->num *arg.denum) + (arg.num*denum);

            temp.denum = this -> denum * arg.denum;

            return temp;

        }

        fraction add_number(fraction arg)

        {

            fraction temp;

            int integer = 2;

            temp.num = integer * this->denum + this-> num;

            temp.denum = this->denum;

            return temp;

        }

        fraction sub(fraction arg)

        {

            fraction temp;

            temp.num = (this->num *arg.denum) - (arg.num*denum);

            temp.denum = this ->denum * arg.denum;

            return temp;

        }

        fraction sub_number(fraction arg) //вычитание целого числа из дроби

        {

            fraction temp;

            int integer = 2;

            temp.num -= integer * this-> denum - this-> num ;

            temp.denum = this->denum;

            return temp;

        }

        fraction sub_number2(fraction arg) // вычитание дроби из целого числа  

        {

            fraction temp;

            int integer = 2;

            temp.num = integer * this->denum - this-> num;

            temp.denum = this->denum;

            return temp;

        }

        fraction step(fraction arg)

        {

            fraction temp;

            temp.num = (num *num);

            temp.denum = (denum*denum);

            return temp;

        }

        fraction sokr(fraction arg)

        {

            fraction temp;

            int div;

            div = NOD(num,denum);

            temp.num = (this -> num / div);

            temp.denum = (this-> denum / div);

            return temp;

        }

    };

    int main()

    {

        fraction fr1;

        fr1.num = 1;

        fr1.denum = 2;

        fraction fr2;

        fr2.num = 3;

        fr2.denum = 5;

        fr1.print();

        fr2.print();

        fr1.mul(fr1).print();

        fr1.mul_number(fr1).print();

        fr1.del(fr2).print();

        fr1.del_number(fr1).print();

        fr1.del_number_two(fr1).print();

        fr1.add(fr2).print();

        fr1.add_number(fr1).print();

        fr1.sub(fr2).print();

        fr1.sub_number(fr1).print();

        fr1.sub_number2(fr1).print();

        fr1.step(fr1).print();

        fr1.sokr(fr1).print();

     }

Ответы 1

  • ВЗРЫЫЫЫЫЫВ

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years