Facebook
From QQ, 5 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 260
  1. -----------------------------------------HEADER------------------------------------------
  2.   ---------------------------------------------------------------------------------------
  3.  
  4.   // stdafx.h: dołącz plik do standardowych systemowych plików dołączanych,
  5. // lub specyficzne dla projektu pliki dołączane, które są często wykorzystywane, ale
  6. // są rzadko zmieniane
  7. //
  8.  
  9. #pragma once
  10.  
  11. #include "targetver.h"
  12.  
  13. #include <stdio.h>
  14. #include <tchar.h>
  15.  
  16. class LWymierna
  17. {
  18. public:
  19.         int licznik, mianownik;
  20.         LWymierna(int l, int m);
  21.         LWymierna operator * (const LWymierna& a);
  22.         LWymierna operator + (const LWymierna& a);
  23. };
  24.  
  25.  
  26.  
  27.   -----------------------------------------CPP------------------------------------------
  28.   ---------------------------------------------------------------------------------------
  29.  
  30.   // SEM3LAB6_wymierne.cpp : Defines the entry point for the console application.
  31. //
  32.  
  33. #include "stdafx.h"
  34. #include<iostream>
  35.  
  36. using namespace std;
  37. int NWD(int x, int y);
  38.  
  39. int main()
  40. {
  41.         LWymierna licz1(1, 2);
  42.         LWymierna licz2(5, 6);
  43.         //licz1 = licz1 * licz2;
  44.  
  45.         LWymierna wynik(0, 0);
  46.         wynik = licz1 + licz2;
  47.         getchar();
  48.     return 0;
  49. }
  50.  
  51. LWymierna::LWymierna(int l, int m)
  52. {
  53.         int nwd = NWD(l, m);
  54.         if (nwd > 1)
  55.         {
  56.                 l /= nwd;
  57.                 m /= nwd;
  58.         }
  59.         licznik = l;
  60.         mianownik = m;
  61. }
  62.  
  63. LWymierna LWymierna :: operator * (const LWymierna& a)
  64. {
  65.         LWymierna retval(0,0);
  66.         retval.licznik = this->licznik * a.licznik;
  67.         retval.mianownik = this->mianownik * a.mianownik;
  68.         return retval;
  69. }
  70.  
  71. LWymierna LWymierna :: operator + (const LWymierna& a)
  72. {
  73.         LWymierna T(this->licznik, this->mianownik);
  74.         LWymierna A(a.licznik, a.mianownik);
  75.         int licz, mian;
  76.         int nnw = (T.mianownik * A.mianownik) / NWD(T.mianownik, A.mianownik);
  77.         int nnwA = nnw / A.mianownik;
  78.         int nnwT = nnw / T.mianownik;
  79.         T.licznik *= nnwT;
  80.         T.mianownik *= nnwT;
  81.         A.licznik *= nnwA;
  82.         A.mianownik *= nnwA;
  83.         licz = A.licznik + T.licznik;
  84.         mian = A.mianownik;
  85.         LWymierna retval(licz, mian);
  86.         return retval;
  87. }
  88.  
  89. int NWD(int x, int y)
  90. {
  91.  
  92.         while (x != y)
  93.                 if (x>y)
  94.                         x -= y; //luy x = x - y;
  95.                 else
  96.                         y -= x; //luy y = y-x
  97.         return x; // luy y - oyie zmienne przechowują wynik NWD(x,y)
  98. }