Доброго времени суток! Срочно нужна помощь! Надо было написать класс дроби на С++ с функциями всех операций над дробями и с перегрузкой операторов. Всё функции операций над дробями я сделал. А вот с перегрузкой операторов проблема. Умоляю помогите сделать перегрузку операторов и объясните как и для чего она делается. Даю последние баллы! Заранее благодарю за помощь.
Вот моя программа (в ней все верно, она рабочая) :
#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(int arg)
{
fraction temp;
temp.num = num * arg;
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(int arg)
{
fraction temp;
temp.num = num;
temp.denum = denum * arg;
return temp;
}
fraction del_number_two(int arg)
{
fraction temp;
temp.num = denum * arg;
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(int arg)
{
fraction temp;
temp.num = arg * 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(int arg) //вычитание целого числа из дроби
{
fraction temp;
temp.num -= arg * this-> denum - this-> num ;
temp.denum = this->denum;
return temp;
}
fraction sub_number2(int arg) // вычитание дроби из целого числа
{
fraction temp;
temp.num = arg * 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;
}
double convertingTOdecimal(fraction arg)
{
return (double)num/denum;
}
};

int main()
{
fraction fr1;
fr1.num;
fr1.denum;
std::cout«"Enter the first fraction: ";std::cin»fr1.num »fr1.denum;
fraction fr2;
fr2.num;
fr2.denum;
std::cout«"Enter the second fraction: ";std::cin»fr2.num »fr2.denum;
int arg;
std::cout«"Enter a number for operations with fractions: ";std::cin»arg;
fr1.print();
fr2.print();
fr1.mul(fr1).print();
fr1.mul_number(arg).print();
fr1.del(fr2).print();
fr1.del_number(arg).print();
fr1.del_number_two(arg).print();
fr1.add(fr2).print();
fr1.add_number(arg).print();
fr1.sub(fr2).print();
fr1.sub_number(arg).print();
fr1.sub_number2(arg).print();
fr1.step(fr1).print();
fr1.sokr(fr1).print();
double decimal = fr1.convertingTOdecimal(fr1);
std::cout«decimal«std::endl;
}​
Please enter comments
Please enter your name.
Please enter the correct email address.
You must agree before submitting.

Answers & Comments


Copyright © 2024 SCHOLAR.TIPS - All rights reserved.