Есть ответ 👍

Поле first – целое положительное число, числитель; поле second – целое положительное число, знаменатель. реализовать метод nesokr ( ) – дроби first/second к несократимому виду. тема: классы, язык с++

247
445
Посмотреть ответы 2

Ответы на вопрос:


Код ниже, : 1. отметь ответ как лучший (поставь 5 звезд). 2. нажми кнопочку "" тут и в моем аккаунте, : ) (за 8 былов такое никто не делает кроме меня, , будь в ответ) код прокомментирован, за дополнительными вопросами или информацией прошу: * обращайся в комментарии, я отвечу на вопросы. * зайди ко мне в профиль, в моих записях ты найдешь ссылки на полезные ресурсы. file: cfraction.hpp #ifndef cfraction_hpp #define cfraction_hpp //это класс дроби, тут мы храним чеслитель, знаменатель и функцию 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_hpp file: 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; }
57601
4,7(7 оценок)

Сходства: то что они оба реагируют на изменения в поле действия датчика определённого типа

Различия: один из них реагирует на цвет, другой на звук

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS