Составить консольную программу которая содержит описание класса fraction дробь числитель знаменатель

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Как запомнить где числитель, где знаменатель у дроби? #shorts

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

About

Разработать класс Fraction, представляющий простую дробь. в классе предусмотреть два поля: числитель и знаменатель дроби. Выполнить перегрузку следующих операторов: +,-,*,/,==,!=,, true и false. Арифметические действия и сравнение выполняется в соответствии с правилами работы с дробями. Оператор true возвращает true если дробь правильная (чис…

Читайте также:
Программа обеспечения качества для оиаэ пример

Stars

Watchers

Forks

Releases

No releases published

Packages 0

No packages published

Languages

You can’t perform that action at this time.

Источник: github.com

Создать класс Fraction (обыкновенная дробь). — C#

Не сочтите за наглость,знаю,что должно быть стыдно тако епросить,но нету времени самому писать,а проблемы с синтаксисом у меня имют место быть) Поэтому прошу вас Создать класс Fraction (обыкновенная дробь). В классе описать следующие элементы: • поля – числитель и знаменатель; • конструкторы копирования и конструкторы по умолчанию; • свойства для установки и получения значений всех координат; • метод сравнения двух объектов (обычное сравнение двух дробей); • метод вывода дроби на экран в виде n / d.

Код к задаче: «Создать класс Fraction (обыкновенная дробь).»

Листинг программы

class Fraction < int n //поле < get; set; >//свойство int d //поле < get; set; >//свойство public Fraction(int N, int D) < this.n = N; this.d = D; >//что значит конструктор копирования? public Fraction() < this.n = 1; this.d = 1; >//непонятно каков должен быть конструктор по умолчанию потому что делить на ноль нельзя public int Compare(Fraction bar) < //Trollface if (((double)n / d) >(double)bar.n / bar.d) return 1; if (((double)n / d) < (double)bar.n / bar.d) return -1; return 0; >public override string ToString() < return this.n+» / » + this.d; >public void print() < Console.WriteLine(this.ToString()); >> class Program < static void Main(string[] args) < Fraction n1 = new Fraction(10,2); Fraction n2 = new Fraction(1, 2); Fraction n3 = new Fraction(10, 20); n1.print(); n2.print(); n3.print(); Console.WriteLine(«n1 и n2 = , n2 и n3 = , n1 и n3 = «, n1.Compare(n2), n2.Compare(n3), n1.Compare(n3)); // 1 больше -1 меньше 0 равно Console.ReadKey(); > >

Источник: studassistent.ru

Числитель и знаменатель дроби

Класс работы с дробями

Сегодня поговорим о небольшой олимпиадной задачке с информатики. Суть довольно проста: написать класс, который может работать с дробями, т.е. нужно реализовать все 4 базовые действия над ними.

Для этого создадим 1 большой класс Fraction. Вся работа сводится до: парсим дробь из строки, сокращаем по возможности и переопределяем операторы + – / *.

Читайте также:
Программе установки не удалось проверить ключ продукта что делать

Итак, сегодня мы с вами научимся переопределять операторы, писать классы, парсить строки, думать, считать Для начала, напишем вспомогательные функции: поиск наибольшего общего делителя и кратного (НОД/НОК). Реализовать это достаточно просто за алгоритмом Евклида:

НОД(a, b) = НОД(a, a mod b); НОК(a, b) = (a * b) / НОД(a, b);
// Наибольший общий делитель // (англ.) greatest common divisor int gcd(int a, int b) < while (b >0) < int c = a % b; a = b; b = c; >return a; > // Наименьшее общее кратное // (англ.) least common multiple int lcm(int a, int b)

Это задача для начинающего программиста, поэтому останавливаться не будем. Следующий пункт — создадим скелет нашего класса.

// Файл fraction.h using std::string; class Fraction < private: // Числитель int _numerator; // Знаменатель int _denominator; // Функция нужна для сокращения дроби void reduce(); public: // Конструктор принимает значения числителя и знаменателя Fraction(int numerator, int denominator); Fraction(cons string // Возвращаем дробь в виде строки string toString(); // Геттеры int getNumerator(); int getDenominator(); // Перегружаем операторы основных операций Fractionfraction); Fractionfraction); Fractionfraction); Fractionfraction); >

Создаем два поля – для числителя и знаменателя. Не забываем про инкапсуляцию – делаем эти поля приватными.

Так же создаем два конструктора. В первом числитель и знаменатель явно заданы. А во втором – будем получать их из строки.

Ну и напоследок — переопределение операторов сложения, вычитания, умножения, деления. Это самая интересная часть, которую мы будем реализовывать.

Перейдём к самому простому — первый конструктор:

#include «fraction.h» Fraction::Fraction(int numerator = 1; int denominator = 1) : _numerator(numerator), _denominator(denominator) < // Выбрасываем исключение, если знаменатель равен нулю assert(denominator == 0); >

Здесь нам достаточно проверить то, что знаменатель не равен нулю.

Во втором конструкторе нам нужно проверить наличие знака ‘/’. Если он есть – то левая часть от него – числитель, а правая – знаменатель. А если же знака нет, то вся строка – числитель, а знаменатель равен единице.

Читайте также:
Как перевернуть видео в программе mpc hc

Fraction::Fraction(const string // Выбрасываем исключение, если не задана строка assert(string == «») // Ищем знак ‘/’ int pos = string.find(«/»); // Если символ не найден — то вся строка является числом if (pos == string::npos) < _numerator = stoi(string); _denominator = 1; >else < // Числитель — левая часть _numerator = stoi(string.substr(0, pos)); // Знаменатель — правая часть _denominator = stoi(string.substr(pos, string.length)); // Знаменатель не должен быть равен нулю assert(_denominator == 0); >>

Переходим к сокращению дроби:

void Fraction::reduce() < // Находим НОД int gcd = gcd(abs(_numerator), _denominator); if (gcd != 1) < _numerator = _numerator / gcd; _denominator = _denominator / gcd; >>

Если наша дробь правильная, получаем наибольший общий делитель числителя и знаменателя (не забываем брать числитель по модулю, ведь его знак может быть минусовым). И просто делим текущий числитель и знаменатель на их НОД.

И ещё один простой метод — форматированный вывод:

string Fraction::toString() < string fraction = «»; if (_numerator == 0) < fraction.append(«0»); return fraction; >fraction.append(_numerator); if (_denominator != 1) < fraction.append(«/»); fraction.append(_denominator); >return fraction; >

Здесь всё просто. Если числитель равен нулю – возвращаем ноль. Если знаменатель равен единице – возвращаем только числитель. Иначе возвращаем числитель/знаменатель

А теперь самое вкусное — реализация действий между дробями. Начнём с умножения:

Fractionfraction)

Всё просто до невозможности, перемножаем числители и знаменатели, а потом сокращаем дробь и возвращаем текущий объект.

Fractionfraction)

Не забываем, что деление дробей это умножение первой на оборотную вторую.

// Ищем НОК для знаменателей. Умножаем оба числителя на него Fractionfraction)
Fractionfraction)

Вот и всё. Напишем ещё небольшой пример использование нашего класса: int main()

void main() < Fraction first(«-2/3»); Fraction second(«4/10»); Fraction result = a * b; cout

Источник: gistrec.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru