Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- // Lukasz Szulborski, 79471
- int NWD(int a, int b)
- {
- while(a!=b)
- if(a>b)
- a-=b;
- else
- b-=a;
- return a;
- }
- class Ulamek {
- public:
- int licznik, mianownik;
- Ulamek(int licz = 0, int mian = 1){
- licznik = licz;
- mianownik = mian;
- }
- Ulamek skroc(Ulamek ul){
- int nwdUlamka = NWD(ul.licznik, ul.mianownik);
- ul.licznik /= nwdUlamka;
- ul.mianownik /= nwdUlamka;
- return ul;
- }
- void setLicznik(int l){
- licznik = l;
- }
- void setMianownik(int m){
- mianownik = m;
- }
- Ulamek operator + (Ulamek const &prawy){
- Ulamek wynik;
- int ujemne = 0;
- wynik.licznik = licznik * prawy.mianownik + prawy.licznik * mianownik;
- wynik.mianownik = mianownik * prawy.mianownik;
- if( wynik.licznik < 0 ){
- wynik.licznik *= -1;
- ujemne = 1;
- }
- if( wynik.mianownik < 0 ){
- wynik.mianownik *= -1;
- ujemne = 1;
- }
- if( wynik.mianownik < 0 && wynik.licznik < 0 ){
- wynik.mianownik *= -1;
- wynik.licznik *= -1;
- }
- wynik = skroc(wynik);
- if( ujemne == 1 ) wynik.licznik *= -1;
- return wynik;
- }
- Ulamek operator - (Ulamek const &prawy){
- Ulamek wynik;
- int ujemne = 0;
- wynik.licznik = licznik * prawy.mianownik - prawy.licznik * mianownik;
- wynik.mianownik = mianownik * prawy.mianownik;
- if( wynik.licznik < 0 ){
- wynik.licznik *= -1;
- ujemne = 1;
- }
- if( wynik.mianownik < 0 ){
- wynik.mianownik *= -1;
- ujemne = 1;
- }
- if( wynik.mianownik < 0 && wynik.licznik < 0 ){
- wynik.mianownik *= -1;
- wynik.licznik *= -1;
- }
- wynik = skroc(wynik);
- if( ujemne == 1 ) wynik.licznik *= -1;
- return wynik;
- }
- Ulamek operator * (Ulamek const &prawy){
- Ulamek wynik;
- wynik.licznik = licznik * prawy.licznik;
- wynik.mianownik = mianownik * prawy.mianownik;
- wynik = skroc(wynik);
- return wynik;
- }
- Ulamek operator / (Ulamek const &prawy){
- Ulamek wynik;
- wynik.licznik = licznik * prawy.mianownik;
- wynik.mianownik = mianownik * prawy.licznik;
- wynik = skroc(wynik);
- return wynik;
- }
- int operator == (Ulamek const &prawy){
- if( licznik == prawy.licznik && mianownik == prawy.mianownik ){
- return 1;
- }else{
- return 0;
- }
- }
- friend ostream & operator<<(ostream &out, const Ulamek &ul){
- out << ul.licznik << "/" << ul.mianownik << endl;
- return out;
- }
- friend istream & operator>>(istream &in, Ulamek &ul){
- string s;
- if( false ){
- char slash = 0;
- in >> ul.licznik >> slash >> ul.mianownik;
- }else{
- char slash = 0;
- char space = 0;
- int total = 0;
- int licznik = 0;
- int mianownik = 0;
- in >> total >> licznik >> slash >> mianownik;
- cout << licznik;
- Ulamek tot(total), res;
- ul.setLicznik(licznik);
- ul.setMianownik(mianownik);
- res = tot + ul;
- ul.setLicznik(res.licznik);
- ul.setMianownik(res.mianownik);
- }
- return in;
- }
- };
- int main(int argc, char** argv) {
- // Ulamek u1(2,3), u2(3,1), u3(5),u4,u5;
- //
- // u4= (u1*u3)/(u3+u4); // 2/3
- // u5=(u1/u2)-u3; // -43/9
- //
- // u4 = u4 + 5;
- Ulamek u1, u2;
- cin >> u1;
- cout << u1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement