Skip to content

Instantly share code, notes, and snippets.

@thinkphp
Created March 15, 2026 10:17
Show Gist options
  • Select an option

  • Save thinkphp/77fb9f563f4d1037b9a7520811449437 to your computer and use it in GitHub Desktop.

Select an option

Save thinkphp/77fb9f563f4d1037b9a7520811449437 to your computer and use it in GitHub Desktop.
Supraincare operatori +,-,*,/ < ==
#include <iostream>
#include <numeric> //pentru a utiliza GCD
using namespace std;
class Fractie {
int nr, nm;//date membre private
void simplifica() { //metoda privata
int d = gcd(abs(nr), abs(nm));
nr /= d; nm /=d;
if(nm < 0) {nr = -nr; nm =-nm;} //semn la numitor
}
public:
Fractie(int n = 0, int m = 1): nr(n), nm(m) { simplifica(); }
//operatori aritmetici
// b
Fractie operator+(const Fractie& f) const {return {nr * f.nm, nm*f.nm};}
Fractie operator-(const Fractie& f) const {return {nr*f.nm - f.nr*nm, nm*f.nm};}
Fractie operator*(const Fractie& f) const {return {nr*f.nr, nm*f.nm};}
Fractie operator/(const Fractie& f) const {return {nr*f.nm, nm*f.nr};}
//operatori de comparatie
bool operator ==(const Fractie& f) const { return nr == f.nr && nm == f.nm;}
bool operator <(const Fractie& f) const { return nr * f.nm < f.nr * nm;}
friend ostream& operator<<(ostream&os, const Fractie& f) {
if(f.nm == 1) return os <<f.nr;
return os << f.nr <<"/"<<f.nm;
}
};
//a/b + c/d
//a,ib + c,id
//Supraincarcarea operatorilor
int main(int argc, char const *argv[])
{
Fractie a(1,2), b(1,3);
//fractia a are date membre: nr si nm, dar fractia b are date membre f.nr, f.nm
cout<<a<<" + "<<b<<" = "<<(a + b)<<endl;
cout<<a<<" - "<<b<<" = "<<(a - b)<<endl;
cout<<a<<" * "<<b<<" = "<<(a * b)<<endl;
cout<<a<<" / "<<b<<" = "<<(a / b)<<endl;
cout<<"1/2 < 1/3 ? "<< ( a < b ? "DA" : "NU")<<endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment