Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
#include
using namespace std; class Fraction{ int numer, denom; int find_gcd(int a, int b){ return a==0?b:find_gcd(b%a, a); } public: void setNum(int num){ numer = num; } void setDen(int num){ denom = num; } int getNum(){ return numer; } int getDen(){ return denom; } Fraction operator +(const Fraction& fr){ Fraction f; if(this->denom!=fr.denom){ f.setDen(this->denom*fr.denom); f.setNum(this->numer*fr.denom + this->denom*fr.numer); }else{ f.setDen(this->denom); f.setNum(this->numer+fr.numer); } f.reduce_fraction(); return f; } Fraction operator -(const Fraction& fr){ Fraction f; if(this->denom!=fr.denom){ f.setDen(this->denom*fr.denom); f.setNum(this->numer*fr.denom - this->denom*fr.numer); }else{ f.setDen(this->denom); f.setNum(this->numer-fr.numer); } f.reduce_fraction(); return f; } Fraction operator *(const Fraction& fr){ Fraction f; f.setNum(this->numer*fr.numer); f.setDen(this->denom*fr.denom); f.reduce_fraction(); return f; } Fraction operator /(const Fraction& fr){ Fraction f; f.setNum(this->numer*fr.denom); f.setDen(this->denom*fr.numer); f.reduce_fraction(); return f; } Fraction operator %(const Fraction& fr){ Fraction f; if(this->denom!=fr.denom){ f.setDen(this->denom*fr.denom); f.setNum(this->numer*fr.denom % this->denom*fr.numer); }else{ f.setDen(this->denom); f.setNum(this->numer%fr.numer); } f.reduce_fraction(); return f; } void power(int power){ this->numer = pow(this->numer,power); this->denom = pow(this->denom,power); this->reduce_fraction(); } void reduce_fraction(){ int gcd = find_gcd(numer, denom); this->numer/=gcd; this->denom/=gcd; } void print_fraction(){ if(numer==denom){ cout << numer << endl; }else{ cout << numer << "/" << denom << endl; } } }; void printMenu(){ system("cls"); cout << "1. Addition (+)" << endl; cout << "2. Substraction (-)" << endl; cout << "3. Multiplication (*)" << endl; cout << "4. Division (/)" << endl; cout << "5. Modulo (%)" << endl; cout << "6. Fraction to the power n" << endl; cout << "7. Exit" << endl; cout << "Enter the operation: " << endl; } void getFraction(Fraction& first, Fraction& second){ int temp; cout << "Enter first fraction numerator and denominator" << endl; cin >> temp; first.setNum(temp); cin >> temp; first.setDen(temp); cout << "Enter the second fraction numerator and denominator" << endl; cin >> temp; second.setNum(temp); cin >> temp; second.setDen(temp); } int main(){ Fraction first, second, result; int input, temp, p; do{ printMenu(); cin >> input; switch(input){ case 1: getFraction(first, second); result = first+second; break; case 2: getFraction(first, second); result = first-second; break; case 3: getFraction(first, second); result = first*second; break; case 4: getFraction(first, second); result = first/second; break; case 5: getFraction(first, second); result = first%second; break; case 6: cout << "Enter fraction numerator and denominator" << endl; cin >> temp; result.setNum(temp); cin >> temp; result.setDen(temp); cout << "Enter the power (integer): "; cin >> p; result.power(p); break; case 7: cout << "Exiting..."; exit(0); break; default: cout << "Only 1 - 6 allowed! Restarting..." << endl; sleep(1); continue; } cout << "Result : "; result.print_fraction(); cout << endl; system("pause"); }while(true); return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)