-----------------------------------------HEADER------------------------------------------ --------------------------------------------------------------------------------------- // stdafx.h: dołącz plik do standardowych systemowych plików dołączanych, // lub specyficzne dla projektu pliki dołączane, które są często wykorzystywane, ale // są rzadko zmieniane // #pragma once #include "targetver.h" #include #include class LWymierna { public: int licznik, mianownik; LWymierna(int l, int m); LWymierna operator * (const LWymierna& a); LWymierna operator + (const LWymierna& a); }; -----------------------------------------CPP------------------------------------------ --------------------------------------------------------------------------------------- // SEM3LAB6_wymierne.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include using namespace std; int NWD(int x, int y); int main() { LWymierna licz1(1, 2); LWymierna licz2(5, 6); //licz1 = licz1 * licz2; LWymierna wynik(0, 0); wynik = licz1 + licz2; getchar(); return 0; } LWymierna::LWymierna(int l, int m) { int nwd = NWD(l, m); if (nwd > 1) { l /= nwd; m /= nwd; } licznik = l; mianownik = m; } LWymierna LWymierna :: operator * (const LWymierna& a) { LWymierna retval(0,0); retval.licznik = this->licznik * a.licznik; retval.mianownik = this->mianownik * a.mianownik; return retval; } LWymierna LWymierna :: operator + (const LWymierna& a) { LWymierna T(this->licznik, this->mianownik); LWymierna A(a.licznik, a.mianownik); int licz, mian; int nnw = (T.mianownik * A.mianownik) / NWD(T.mianownik, A.mianownik); int nnwA = nnw / A.mianownik; int nnwT = nnw / T.mianownik; T.licznik *= nnwT; T.mianownik *= nnwT; A.licznik *= nnwA; A.mianownik *= nnwA; licz = A.licznik + T.licznik; mian = A.mianownik; LWymierna retval(licz, mian); return retval; } int NWD(int x, int y) { while (x != y) if (x>y) x -= y; //luy x = x - y; else y -= x; //luy y = y-x return x; // luy y - oyie zmienne przechowują wynik NWD(x,y) }