Предмет: Информатика, автор: kumiho9fox

Доброго времени суток. Нужна помощь с написанием функции на языке с++. Надо написать функцию для умножение целого числа на дробь и деления целого числа дробью. Ещё так же надо сделать функцию деления дроби на целое число. Помогите, пожалуйста! Даю последние баллы ​


hypefaq: С комментариями или без?
kumiho9fox: было бы не плохо с комментарием, но не обязательно

Ответы

Автор ответа: hypefaq
1

Функция умножения целого числа на дробь:

// Определение структуры дроби, в которой есть числитель и знаменатель

struct Fraction {

   int numerator;

   int denominator;

};

// Функция нахождения наибольшего общего делителя двух чисел

int gcd(int a, int b) {

   if (b == 0) {

       return a;

   }

   return gcd(b, a % b);

}

// Функция умножения целого числа на дробь

Fraction multiplyFractionByInt(Fraction fraction, int integer) {

   // Создание новой дроби, которая будет результатом умножения

   Fraction result;

   // Числитель новой дроби равен произведению числителя и целого числа

   result.numerator = fraction.numerator * integer;

   // Знаменатель новой дроби равен знаменателю исходной дроби

   result.denominator = fraction.denominator;

   // Нахождение наибольшего общего делителя числителя и знаменателя новой дроби

   int common = gcd(result.numerator, result.denominator);

   // Сокращение новой дроби путем деления числителя и знаменателя на наибольший общий делитель

   result.numerator /= common;

   result.denominator /= common;

   // Возврат новой дроби в качестве результата функции

   return result;

}

int main() {

   // Создание дроби и целого числа, на которые будет производиться умножение

   Fraction fraction;

   fraction.numerator = 2;

   fraction.denominator = 3;

   int integer = 4;

   // Вызов функции умножения целого числа на дробь и сохранение результата в переменной

   Fraction result = multiplyFractionByInt(fraction, integer);

   // Вывод результата умножения на экран

   std::cout << result.numerator << "/" << result.denominator << std::endl;

   return 0;

}











Функция деления целого числа на дробь:

// Определение структуры дроби, в которой есть числитель и знаменатель

struct Fraction {

   int numerator;

   int denominator;

};

// Функция нахождения наибольшего общего делителя двух чисел

int gcd(int a, int b) {

   if (b == 0) {

       return a;

   }

   return gcd(b, a % b);

}

// Функция деления целого числа на дробь

Fraction divideIntByFraction(int integer, Fraction fraction) {

   // Создание новой дроби, которая будет результатом деления

   Fraction result;

   // Числитель новой дроби равен целому числу

   result.numerator = integer;

   // Знаменатель новой дроби равен произведению знаменателя исходной дроби и целого числа

   result.denominator = fraction.denominator * integer;

   // Нахождение наибольшего общего делителя числителя и знаменателя новой дроби

   int common = gcd(result.numerator, result.denominator);

   // Сокращение новой дроби путем деления числителя и знаменателя на наибольший общий делитель

   result.numerator /= common;

   result.denominator /= common;

   // Возврат новой дроби в качестве результата функции

   return result;

}

int main() {

   // Создание дроби и целого числа, на которые будет производиться деление

   Fraction fraction;

   fraction.numerator = 2;

   fraction.denominator = 3;

   int integer = 4;

   // Вызов функции деления целого числа на дробь и сохранение результата в переменной

   Fraction result = divideIntByFraction(integer, fraction);

   // Вывод результата деления на экран

   std::cout << result.numerator << "/" << result.denominator << std::endl;

   return 0;

}








Функция деления дроби на целое число:

// Определение структуры дроби, в которой есть числитель и знаменатель

struct Fraction {

   int numerator;

   int denominator;

};

// Функция нахождения наибольшего общего делителя двух чисел

int gcd(int a, int b) {

   if (b == 0) {

       return a;

   }

   return gcd(b, a % b);

}

// Функция деления дроби на целое число

Fraction divideFractionByInt(Fraction fraction, int integer) {

   // Создание новой дроби, которая будет результатом деления

   Fraction result;

   // Числитель новой дроби равен числителю исходной дроби

   result.numerator = fraction.numerator;

   // Знаменатель новой дроби равен произведению знаменателя исходной дроби и целого числа

   result.denominator = fraction.denominator * integer;

   // Нахождение наибольшего общего делителя числителя и знаменателя новой дроби

   int common = gcd(result.numerator, result.denominator);

   // Сокращение новой дроби путем деления числителя и знаменателя на наибольший общий делитель

   result.numerator /= common;

   result.denominator /= common;

 // Возврат новой дроби в качестве результата функции

   return result;

}

int main() {

   // Создание дроби и целого числа, на которые будет производиться деление

   Fraction fraction;

   fraction.numerator = 2;

   fraction.denominator = 3;

   int integer = 4;

   // Вызов функции деления дроби на целое число и сохранение результата в переменной

   Fraction result = divideFractionByInt(fraction, integer);

   // Вывод результата деления на экран

   std::cout << result.numerator << "/" << result.denominator << std::endl;

   return 0;

}


kumiho9fox: спасибо огромное! очень выручили
Похожие вопросы
Предмет: Геометрия, автор: sultan7186
Предмет: Алгебра, автор: fockin2005foki