Привет, код задачи приведен ниже, пожалуйста:1. Отметь ответ как лучший (поставь 5 звезд).2. Нажми кнопочку "Спасибо" тут и в моем аккаунте, спасибо :)(За 8 былов такое никто не делает кроме меня, пожалуйста, будь благодарен в ответ)Код прокомментирован, за дополнительными вопросами или информацией прошу:* Обращайся в комментарии, я отвечу на вопросы.* Зайди ко мне в профиль, в моих записях ты найдешь ссылки на полезные ресурсы.FILE: CFraction.hpp#ifndef CFRACTION_HPP#define CFRACTION_HPP//Это класс дроби, тут мы храним чеслитель, знаменатель и функцию nesokr().class CFraction{ public: CFraction(); //Конструктор класа //"Геттеры" класса для получения значений приватных полей const unsigned int& getNumerator() const; const unsigned int& getDenumerator() const; //"Сеттеры" класса для задани значений приватным полям void setNumerator(const unsigned int& value); void setDenumerator(const unsigned int& value); //Функция заданная по заданию для сокращения дроби void nesokr(); private: //Функция реализующая поиск найбольшего общего делителя по алгоритму Евклида const unsigned int getGreatestCommonDivisor() const; //Функция проверяющая, есть ли необходимость искать НОД const bool isRequireCalculationGCD() const; private: unsigned int mFirst; //Поле для числителя unsigned int mSecond; //Поле для знаменателя};#endif //CFRACTION_HPPFILE: CFraction.cpp#include "CFraction.hpp"CFraction::CFraction(): mFirst(0) //Числитель инициализируем нулем, mSecond(1) //Знаменатель по умолчанию инициализируем единицей{}//Возращение значений происходит по константной ссылке.//Благодаря этому избегается копирование переменной,//а так же её модификация по ссылке.const unsigned int& CFraction::getNumerator() const{ return mFirst;}//Функция имеет в конце себя слово const сигнализирующее компилятору,//что метод не способен модифицировать поля класса.const unsigned int& CFraction::getDenumerator() const{ return mSecond;}//Передача аргумента в функцию так же реализуется по константной ссылке,//из тех же соображений что и возращение поля по константной ссылке.void CFraction::setNumerator(const unsigned int& value){ mFirst = value;}void CFraction::setDenumerator(const unsigned int& value){ //Проверяем значение на 0, знаменатель не может быть равнм нулю. //Значение не проверяется на знак отрицания, по тому, что везде используется //беззнаковый целочисленный тип данных unsigned int. if (0 != value) { mSecond = value; }}void CFraction::nesokr(){ //Если есть необходимость проводить расчёты и сокращать дробь, то //находим НОД и делим на него чеслитель и знаменатель. if ( isRequireCalculationGCD() ) { unsigned int greatestCommonDivisor = getGreatestCommonDivisor(); mFirst /= greatestCommonDivisor; mSecond /= greatestCommonDivisor; }}const bool CFraction::isRequireCalculationGCD() const{ //Проверяем, не является, ли знаменатель равным единице, //иначе нет смысла проводить безсмысленную работу, т.к. в любом случаи НОД //будет единица, то же самое делаем с числителем. return ( (1 != mSecond || 1 != mFirst) || (1 != mSecond && 1 != mFirst) );}const unsigned int CFraction::getGreatestCommonDivisor() const{ //Алгоритм поиска НОД называется алгоритмом Евклида unsigned int remainder(1); //Для его реадизации берем два числа и выделяем из них большее и меньшее. unsigned int gretestNumber = (mFirst > mSecond ? mFirst : mSecond); unsigned int leastNumber = (mFirst < mSecond ? mFirst : mSecond); while (0 != remainder) { remainder = gretestNumber % leastNumber; //Если остаток деления большего на меньшее равен нулю, //то НОД является меньшее из этих чисел if (0 != remainder) { //Если же остаток не равен нулю, //то большим числом становится предыдущее меньшее, //а меньшим становится остаток от леления. gretestNumber = leastNumber; leastNumber = remainder; } } return leastNumber;}FILE: main.cpp#include <iostream>#include "CFraction.hpp"int main(){ CFraction example; example.setNumerator(15); example.setDenumerator(255); std::cout << "Fraction before simplification:" << std::endl; std::cout << "Fraction numerator: " << example.getNumerator() << std::endl; std::cout << "Fraction denumerator: " << example.getDenumerator() << std::endl; example.nesokr(); std::cout << "------------------------------" << std::endl; std::cout << "Fraction after simplification:" << std::endl; std::cout << "Fraction numerator: " << example.getNumerator() << std::endl; std::cout << "Fraction denumerator: " << example.getDenumerator() << std::endl; return 0;}