Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.25 KB | None | 0 0
  1. // Karol.cpp : main project file.
  2.  
  3. #include "stdafx.h"
  4. #include <iostream>
  5. #include <conio.h>
  6. #include <math.h>
  7.  
  8. using namespace std;
  9.  
  10. #define N 20
  11.  
  12. /*
  13. int a = 5;
  14. int * wsk = &a;
  15.  
  16. a = 7;
  17. *wsk = 7;
  18. */
  19.  
  20. struct Z
  21. {
  22.     float re;
  23.     float im;
  24. };
  25.  
  26. void wypisz_z_1(Z z);   //przez wartość
  27. void wypisz_z_2(const Z * z);   //przez wskaźnik
  28. void wypisz_z_3(const Z & z);   //przez referencję
  29.  
  30. Z wpisz_z_1();  //przez return
  31. void wpisz_z_2(Z * z);  //przez wskaźnik
  32. void wpisz_z_3(Z & z);  //przez referencję
  33.  
  34. void wpisz_macierz(Z M[][N], int w, int k);
  35. void wyswietl_macierz(Z M[][N], int w, int k);
  36. int f1(Z M[][N], int w, int k, int *licz_2, Z & suma);
  37. Z f2(Z M[][N], int w, int k); //wylicza średnią elementów naprzekątnej \
  38.  
  39. int main()
  40. {
  41.     /*
  42.     Z z1, z2, z3;
  43.  
  44.     z1 = wpisz_z_1();
  45.     wpisz_z_2(&z2);
  46.     wpisz_z_3(z3);
  47.  
  48.     wypisz_z_1(z1);
  49.     cout << endl;
  50.     wypisz_z_2(&z2);
  51.     cout << endl;
  52.     wypisz_z_3(z3);
  53.     */
  54.  
  55.     Z M[N][N];
  56.     int w, k;
  57.     do {
  58.         cout << "Podaj wymiar macierzy M(w,k)." << endl;
  59.         cout << "w = ";
  60.         cin >> w;
  61.         cout << "k = ";
  62.         cin >> k;
  63.     } while (!(w > 0 && k > 0 && w <= N && k <= N));
  64.  
  65.     wpisz_macierz(M, w, k);
  66.     cout << endl;
  67.     wyswietl_macierz(M, w, k);
  68.  
  69.     _getch();
  70.     return 0;
  71. }
  72.  
  73.  
  74. void wypisz_z_1(Z z)
  75. {
  76.     if (z.im < 0) cout << z.re << " - " << -z.im << "j";
  77.     else cout << z.re << " + " << z.im << "j";
  78. }
  79.  
  80. void wypisz_z_2(const Z * z)
  81. {
  82.     if ((*z).im < 0) cout << (*z).re << " - " << -(*z).im << "j";
  83.     else cout << (*z).re << " + " << (*z).im << "j";
  84. }
  85.  
  86. void wypisz_z_3(const Z & z)
  87. {
  88.     if (z.im < 0) cout << z.re << " - " << -z.im << "j";
  89.     else cout << z.re << " + " << z.im << "j";
  90. }
  91.  
  92. Z wpisz_z_1()
  93. {
  94.     Z temp;
  95.     cin >> temp.re;
  96.     cin >> temp.im;
  97.     return temp;
  98. }
  99.  
  100. void wpisz_z_2(Z * z)
  101. {
  102.     cin >> (*z).re;
  103.     cin >> (*z).im;
  104. }
  105.  
  106. void wpisz_z_3(Z & z)
  107. {
  108.     cin >> z.re;
  109.     cin >> z.im;
  110. }
  111.  
  112. void wpisz_macierz(Z M[][N], int w, int k)
  113. {
  114.     for (int i = 0; i < w; ++i)
  115.     {
  116.         for (int j = 0; j < k; ++j)
  117.         {
  118.             cout << "M(" << i + 1 << "," << j + 1 << ") = ";
  119.             wpisz_z_3(M[i][j]);
  120.         }
  121.     }
  122. }
  123.  
  124. void wyswietl_macierz(Z M[][N], int w, int k)
  125. {
  126.     for (int i = 0; i < w; ++i)
  127.     {
  128.         for (int j = 0; j < k; ++j)
  129.         {
  130.             wypisz_z_3(M[i][j]);
  131.             cout << "\t";
  132.         }
  133.         cout << endl;
  134.     }
  135. }
  136.  
  137. int f1(Z M[][N], int w, int k, int *licz_2, Z & suma)
  138. {
  139.     int licz_1 = 0;
  140.     *licz_2 = 0;
  141.     suma.re = 0;
  142.     suma.im = 0;
  143.     for (int i = 0; i < w; ++i)
  144.     {
  145.         for (int j = 0; j < k; ++j)
  146.         {
  147.             if (M[i][j].re > 0)++licz_1;    //zlicza liczby zepolone, których część re jest większa od 0
  148.             if (M[i][j].im < 0)++*licz_2;   //zlicza liczby zepolone, których część im jest mniejsza od 0
  149.             if (M[i][j].re == 0 || M[i][j].im == 0) //sumuje liczby zespolone, których jedna z części jest równa 0
  150.             {
  151.                 suma.re += M[i][j].re;
  152.                 suma.im += M[i][j].im;
  153.             }
  154.         }
  155.     }
  156.     return licz_1;
  157. }
  158.  
  159. Z f2(Z M[][N], int w, int k)
  160. {
  161.     Z suma, srednia;
  162.     int il=0;
  163.     suma.re = 0;
  164.     suma.im = 0;
  165.    
  166.     if (w == k)
  167.     {
  168.         for (int i = 0; i < w; ++i)
  169.         {
  170.             suma.re += M[i][i].re;
  171.             suma.im += M[i][i].im;
  172.             ++il;
  173.         }
  174.         if (il > 0)
  175.         {
  176.             srednia.re = suma.re / il;
  177.             srednia.im = suma.im / il;
  178.         }
  179.         else
  180.         {
  181.             srednia.im = 0;
  182.             srednia.re = 0;
  183.         }
  184.     }
  185.     else
  186.     {
  187.         srednia.im = 0;
  188.         srednia.re = 0;
  189.     }
  190.     return srednia;
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement