Доброго времени суток. Очень срочно нужна помощь. Задача заключалась в том, чтобы написать все функции на языке с++ для операций с дробями, у меня не получается сделать функцию перевода обычной дроби в десятичную. Видел уже похожие вопросы на других сайтах, но те ответы, что даны, в моей программе работают не правильно.
Вот моя программа:
#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();
}
Предмет:
ИнформатикаАвтор:
badandcrazyВЗРЫЫЫЫЫЫВ
Автор:
zlatikaziatikДобавить свой ответ
Предмет:
ИнформатикаАвтор:
davinОтветов:
Смотреть
Предмет:
ХимияАвтор:
yazminrichОтветов:
Смотреть
Предмет:
АлгебраАвтор:
yasminevgiuОтветов:
Смотреть