Advertisement
filip710

LV5 - Z2

Nov 30th, 2016
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.52 KB | None | 0 0
  1. /*Definirajte imenik nazvan prema vlastitom imenu koji sadrži klasu koja
  2. predstavlja kompleksni broj (ime: Complex). Klasa treba sadržavati
  3. podrazumijevani i parametarski konstruktor, pristupne metode (postavljanje i
  4. dohvaćanje) te preopterećene relacijske operatore (==, !=, <, >, >=, <=, nap.
  5. dovoljno je napisati dva i ostale izvesti preko njih). Kompleksni brojevi se
  6. korištenjem ove klase uspoređuju po modulu. Definirajte novi imenik nazvan po
  7. vlastitom prezimenu koji sadrži klasu koja predstavlja kompleksni broj (ime:
  8. Complex). Klasa treba sadržavati sve kao i prethodna klasa, ali se kompleksni
  9. brojevi uspoređuju najprije po realnom, a zatim po imaginarnom dijelu. U
  10. glavnom dijelu programa stvoriti dva polja kompleksnih brojeva (za svaku klasu
  11. po jedno polje), popuniti ih nasumično generiranim objektima te ih sortirati i
  12. ispisati (oba polja trebaju sadržavati iste kompleksne brojeve). Sortiranje obaviti
  13. funkcijom, koja može biti ili predložak ili preopterećena.*/
  14. #include<iostream>
  15. #include<cmath>
  16. #include<ctime>
  17. using namespace std;
  18.  
  19. namespace Filip {
  20.     class Complex {
  21.         friend bool operator== (const Complex &c1, const Complex &c2);
  22.         friend bool operator!= (const Complex &c1, const Complex &c2);
  23.         friend bool operator< (const Complex &c1, const Complex &c2);
  24.         friend bool operator> (const Complex &c1, const Complex &c2);
  25.         friend bool operator<= (const Complex &c1, const Complex &c2);
  26.         friend bool operator>= (const Complex &c1, const Complex &c2);
  27.     private:
  28.         float re, im;
  29.     public:
  30.         Complex() : re(0), im(0) {};
  31.         Complex(float _re, float _im) : re(_re), im(_im) {};
  32.  
  33.         float getRe();
  34.         void setRe(float _re);
  35.         float getIm();
  36.         void setIm(float _im);
  37.     };
  38. }
  39.  
  40. float Filip::Complex::getRe() {
  41.     return re;
  42. }
  43. void Filip::Complex::setRe(float _re) {
  44.     re = _re;
  45. }
  46. float Filip::Complex::getIm() {
  47.     return im;
  48. }
  49. void Filip::Complex::setIm(float _im) {
  50.     im = _im;
  51. }
  52. bool Filip::operator== (const Complex &c1, const Complex &c2) {
  53.     if ((sqrt(c1.re*c1.re + c1.im*c1.im)) == (sqrt(c2.re*c2.re + c2.im*c2.im)))
  54.         return true;
  55.     return false;
  56. }
  57. bool Filip::operator!= (const Complex &c1, const Complex &c2) {
  58.     return !(c1 == c2);
  59. }
  60. bool Filip::operator< (const Complex &c1, const Complex &c2) {
  61.     if ((sqrt(c1.re*c1.re + c1.im*c1.im)) < (sqrt(c2.re*c2.re + c2.im*c2.im)))
  62.         return true;
  63.     return false;
  64. }
  65. bool Filip::operator> (const Complex &c1, const Complex &c2) {
  66.     return !(c1 < c2);
  67. }
  68. bool Filip::operator<= (const Complex &c1, const Complex &c2) {
  69.     if ((sqrt(c1.re*c1.re + c1.im*c1.im)) <= (sqrt(c2.re*c2.re + c2.im*c2.im)))
  70.         return true;
  71.     return false;
  72. }
  73. bool Filip::operator>= (const Complex &c1, const Complex &c2) {
  74.     if ((sqrt(c1.re*c1.re + c1.im*c1.im)) >= (sqrt(c2.re*c2.re + c2.im*c2.im)))
  75.         return true;
  76.     return false;
  77. }
  78.  
  79. namespace Cesnek {
  80.     class Complex {
  81.         friend bool operator== (const Complex &c1, const Complex &c2);
  82.         friend bool operator!= (const Complex &c1, const Complex &c2);
  83.         friend bool operator< (const Complex &c1, const Complex &c2);
  84.         friend bool operator> (const Complex &c1, const Complex &c2);
  85.         friend bool operator<= (const Complex &c1, const Complex &c2);
  86.         friend bool operator>= (const Complex &c1, const Complex &c2);
  87.     private:
  88.         float re, im;
  89.     public:
  90.         Complex() : re(0), im(0) {};
  91.         Complex(float _re, float _im) : re(_re), im(_im) {};
  92.  
  93.         float getRe();
  94.         void setRe(float _re);
  95.         float getIm();
  96.         void setIm(float _im);
  97.     };
  98. }
  99.  
  100. float Cesnek::Complex::getRe() {
  101.     return re;
  102. }
  103. void Cesnek::Complex::setRe(float _re) {
  104.     re = _re;
  105. }
  106. float Cesnek::Complex::getIm() {
  107.     return im;
  108. }
  109. void Cesnek::Complex::setIm(float _im) {
  110.     im = _im;
  111. }
  112. bool Cesnek::operator== (const Complex &c1, const Complex &c2) {
  113.     if ((c1.re == c2.re) && (c1.im == c2.im))
  114.         return true;
  115.     return false;
  116. }
  117. bool Cesnek::operator!= (const Complex &c1, const Complex &c2) {
  118.     return !(c1 == c2);
  119. }
  120. bool Cesnek::operator< (const Complex &c1, const Complex &c2) {
  121.     if ((c1.re < c2.re) && (c1.im < c2.im))
  122.         return true;
  123.     return false;
  124. }
  125. bool Cesnek::operator> (const Complex &c1, const Complex &c2) {
  126.     return !(c1 < c2);
  127. }
  128. bool Cesnek::operator<= (const Complex &c1, const Complex &c2) {
  129.     if ((c1.re <= c2.re) && (c1.im <= c2.im))
  130.         return true;
  131.     return false;
  132. }
  133. bool Cesnek::operator>= (const Complex &c1, const Complex &c2) {
  134.     if ((c1.re >= c2.re) && (c1.im >= c2.im))
  135.         return true;
  136.     return false;
  137. }
  138.  
  139. template<class Tip>
  140. void sort(Tip array[], int n) {
  141.     Tip temp;
  142.     for (int i = 0; i < (n - 1); i++)
  143.     {
  144.         for (int j = 0; j < n - i - 1; j++)
  145.         {
  146.             if (array[j] > array[j + 1])
  147.             {
  148.                 temp = array[j];
  149.                 array[j] = array[j + 1];
  150.                 array[j + 1] = temp;
  151.             }
  152.         }
  153.     }
  154. }
  155. int main()
  156. {
  157.     float rand_re, rand_im;
  158.     int n;
  159.     cout << "Broj elemenata: ";
  160.     cin >> n;
  161.    
  162.     Filip::Complex *c1 = new Filip::Complex[n];
  163.     Cesnek::Complex *c2 = new Cesnek::Complex[n];
  164.  
  165.     srand((unsigned)time(NULL));
  166.  
  167.     for (int i = 0; i < n; i++) {
  168.         rand_re = ((float)rand() / (float)(RAND_MAX)) * 2.0;
  169.         rand_im = ((float)rand() / (float)(RAND_MAX)) * 3.0;
  170.         c1[i].setRe(rand_re);
  171.         c1[i].setIm(rand_im);
  172.         c2[i].setRe(rand_re);
  173.         c2[i].setIm(rand_im);
  174.     }
  175.  
  176.     sort(c1, n);
  177.     sort(c2, n);
  178.  
  179.     cout << "C1 sortirano (po modulu)" << endl;
  180.     for (int i = 0; i < n; i++) {
  181.         cout << c1[i].getRe() << "+" << c1[i].getIm() << "i" << endl;
  182.     }
  183.     cout << endl << "C2 sortirano (po re i im vrijednostima)" << endl;
  184.     for (int i = 0; i < n; i++) {
  185.         cout << c2[i].getRe() << "+" << c2[i].getIm() << "i" << endl;
  186.     }
  187.  
  188.     delete[] c1;
  189.     delete[] c2;
  190.  
  191.     system("pause");
  192.     return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement