Доброе время суток. Нужна помощь. Задаю этот вопрос не в первый раз, но никто так и не смог помочь. Задача заключается в то, чтобы написать функцию перевода из обычной дроби в десятичную на языке с++. Вообще задача была сделать все операции с дробями, но только эту функцию написать не получается.
Вот моя программа :
#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();
}
Пожалуйста, помогите, даю последние баллы!
Answers & Comments
Verified answer
Ответ: Одним з можливих варіантів реалізації функції переводу звичайної дробу в десяткову дробу на мові C++ може бути наступне рішення:
Объяснение: попробуй так
#include <iostream>
double toDecimal(int numerator, int denominator) {
// Перевірка на нульовий знаменник
if (denominator == 0) {
std::cerr << "Помилка: знаменник дорівнює нулю!" << std::endl;
return 0;
}
// Перетворення дробу у десяткову дробь
return (double) numerator / denominator;
}
int main() {
int numerator, denominator;
std::cout << "Введіть чисельник та знаменник дробу: ";
std::cin >> numerator >> denominator;
double decimal = toDecimal(numerator, denominator);
std::cout << numerator << "/" << denominator << " = " << decimal << std::endl;
return 0;
}
Ця функція перевіряє, чи дорівнює знаменник нулю, а потім перетворює звичайну дріб у десяткову дріб за допомогою приведення типів до типу double. Функція повертає десяткову дробь.
У функції main () виконується введення чисельника та знаменника звичайної дробі, після чого викликається функція toDecimal (), і результат виводиться на екран.