Advertisement
xTheEc0

4. Užduotis. Darbas grupėje. Rasti mediana rand() masyve.

Nov 27th, 2015
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.99 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>// Input output stream
  3. #include <ctime>   // time used for random number generation
  4.  
  5. using namespace std;
  6.  
  7. // ------------------------------------------------------------ //
  8.  
  9. // Funkciju prototipai
  10. void numberGen(int a[], int n, int x, int y);
  11. void printOut(int a[], int n);
  12. void bubbleSort(int a[], int n);
  13. float findMedian(int a[], int n);
  14.  
  15. // ------------------------------------------------------------ //
  16.  
  17. // Pagrindine programa
  18. int main(int argc, char *argv[])
  19. {
  20.     srand(time(NULL));  // Atsitiktiniu skaiciu generavimas.
  21.     int n;              // Kitamasis nustato masyvo A dydi.
  22.     int x, y;           // Intervalo [x:y] kintamieji. Galima intepretuoti kaip min max.
  23.  
  24.     cout << "Kiek elementu yra masyve? "; cin >> n;      // Atspausdina teksta ekrane
  25.     int A[n];          // Sukuriamas masyvas pagal vartotojo yvesta dydi 'n' taupant atminti.
  26.  
  27.     cout << "Kokio dydzio intervalas? [X : Y]" << endl;  // Atspausdina teksta ekrane
  28.     cin >> x >> y;     // Vartotojas nurodo [x:y] intervala.
  29.  
  30.     // Kvieciamos funkcijos
  31.     cout << "\n\nAtsitiktiniu skaiciu eilute: " << endl;
  32.     numberGen(A, n, x, y);      // Sukuriami atsitiktiniai skaiciai.
  33.     printOut(A, n);         // Tie skaiciai atspauzdinami ekrane.
  34.  
  35.     cout << "\n\nSkaiciai surusiuoti didejimo tvarka: " << endl;
  36.     bubbleSort(A, n);           // Skaiciai surusiuojami.
  37.     printOut(A, n);         // Surusiuoti skaiciai atspauzdinami ekrane.
  38.  
  39.     cout << "\n\nSios eilutes mediana yra: " << findMedian(A, n) << endl; // Atspauzdinamas atsakymas.
  40.  
  41.     cout << " " << endl;
  42.     return 0;
  43. }
  44.  
  45. // ------------------------------------------------------------ //
  46.  
  47. // Funkcijos
  48. void numberGen(int a[], int n, int x, int y)
  49. {
  50.     for (int i = 0; i < n; i++)
  51.         a[i] = x + (rand() %(y - x + 1));
  52.                 // Generuojamas skaicius is [x:y] intervalo kiekvienam masyvo a[i] elementui.
  53. }
  54.  
  55. void printOut(int a[], int n)
  56. {
  57.     for (int i = 0; i < n; i++)
  58.         cout << a[i] << " ";
  59.  
  60.     cout << endl;
  61. }
  62.  
  63. void bubbleSort(int a[], int n) // Naudojamas "bubble sort" rusiavimo metodas,
  64. {               // kad isrykiuoti skaicius didejimo tvarka
  65.     int temp;
  66.     for (int i = 0; i < n; i++)
  67.     {
  68.         for (int j = i+1; j < n; j++)
  69.         {
  70.             if (a[i] > a[j])
  71.             {
  72.                 temp = a[i];
  73.                 a[i] = a[j];
  74.                 a[j] = temp;
  75.             }
  76. }}}
  77.  
  78. float findMedian(int a[], int n)
  79. {
  80.     // Laikini kintamieji
  81.     float median;
  82.     int location;
  83.     float average;
  84.  
  85.     if (n % 2 == 0)     // Jei yra lyginis skaicius elementu, tai reikes rasti du viduriniuosius.
  86.     {
  87.         location = n / 2 ;
  88.         average = a[location];
  89.         location--;
  90.         average += a[location];
  91.         average /= 2;
  92.         median = average;
  93.     }
  94.     else                // Jeigu yra nelyginis skaicius elementu, reikia rasti tik vidurini.
  95.     {
  96.         location = n / 2;
  97.         median = a[location];
  98.     }
  99.     return median;      // Grazinama mediana
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement