Advertisement
Leedwon

Untitled

Jan 20th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #define MAX_N 10000
  4.  
  5. using namespace std;
  6.  
  7. int tab_int[MAX_N];
  8.  
  9.  
  10. void read(int n) {
  11.     for (int i = 0; i < n; i++)
  12.         cin >> tab_int[i];
  13. }
  14.  
  15. /*
  16.     @param int n - rozmiar tablicy podawan przez uzytkownika na poczatku programu
  17.     @param int tab_empty - steruje wpisywaniem do tablicy powinien tutaj byc bool co byloby duzo ladniejszym rozwiazaniem ale wtedy nie przeszloby testu
  18.                             a najlepszym rozwiazaniem byloby przekaznie tablicy, a jej wypelnienie zostawic osobnej funkcji ale to tez nie przeszloby testu
  19.     @param int startIteration - parametr mowiacy nam od kiedy rozpoczac iterowanie przy znajdowanie najmniejszego elementu
  20.                                 szczerze mowiac jest on nie ptorzebny i stworzony jedynie sztucznie przez imo zle sformulowane zadanie ktore wymaga od nas uzycia funkcji f0 w f1,
  21.                                 co mialoby sens gdyby funckja f0 zwracala tylko najmniejszy indeks a nie wypisywala wartosci
  22.     @param bool write - j.w potrzebny przez zle sformulowane zadanie decyduje on czy funkcja ma wypisac wartosci jesli true (musi je wypisac zeby zdac test dla tej funkcji)
  23.                         jesli false nie wypisuje ich, gdyby wypisywal je caly czas w funckji f1 nastapiloby rowniez wypisani wartosci i niemozliwe byloby zdanie naraz testow f0 i f1
  24.  
  25.  
  26. */
  27.  
  28.  
  29. int f0(int n, int tab_empty, int startIteration, bool write) {
  30.     if (tab_empty == 1) // jesli 1 to wpisz wartosci do tablicy
  31.         read(n);
  32.  
  33.     int Smallest = tab_int[startIteration]; // najmniejsza wartosc to 1 znaczacy element tablicy, znaczacy tj jezeli mamy tablice int[5] = {0, 2, 3, 4, 1} to ten parametr decyduje od ktorego miejsca ma zaczac a ktore pominac potrzebne do f1
  34.     int positionOfSmallest = startIteration; // j.w
  35.  
  36.     for (int i = startIteration; i < n; i++) {
  37.         if (tab_int[i] < Smallest) { // jesli aktualny element mniejszy od najmniejszego to ustaw go jako najmniejszy
  38.             positionOfSmallest = i;
  39.             Smallest = tab_int[i];
  40.         }
  41.     }
  42.     if (write == true) {
  43.         for (int i = 0; i < n; i++) {
  44.             if (tab_int[i] == Smallest) {
  45.                 cout << i + 1 << " ";
  46.             }
  47.         }
  48.     }
  49.     return positionOfSmallest;
  50. }
  51.  
  52. void f1(int n, int tab_empty) {
  53.     if (tab_empty == 1)
  54.         f0(n, tab_empty, 0, false); // wypelnienie tablicy
  55.  
  56.     for (int i = 0; i < n; i++) {
  57.         int indexOfsmallest = f0(n, -1, i, false);// -1 = tab_empty brak zapisania do tablicy, przekazujemy i czyli iterujemy nasza tablice rowniez w funckji, gdybysmy tego nie robili to funkcja f0 caly czas zwracalaby indeks 0 poniewaz po 1 wykonaniu petli to tam wstawim najmniejszy element
  58.         // zamien wartosc spod kolejnego indeksu na mniejsza wartosc (porzadkowanie tablicy)
  59.         int temp = tab_int[indexOfsmallest];
  60.         tab_int[indexOfsmallest] = tab_int[i];
  61.         tab_int[i] = temp;
  62.     }
  63.     for (int i = n - 1; i >= 0; i--)
  64.         cout << tab_int[i] << " "; // wypisanie uporzadkowanych wartosci
  65.  
  66. }
  67.  
  68. void swap(int *x, int *y)
  69. {
  70.     int temporary = *x; // przypisz wartosc spod wskaznika x do zmiennej temp
  71.     *x = *y; // zamien wartosc x na wartosc y
  72.     *y = temporary; // zamien wartosc y na wartosc temporary(czyli x)
  73. }
  74.  
  75. void f4(int n, int tab_empty) {
  76.  
  77.     if (tab_empty == 1)
  78.         read(n);
  79.  
  80.     int *first = tab_int;
  81.     int *last = first + n - 1;
  82.  
  83.     while (first < last) {
  84.         swap(first, last);
  85.         ++first;
  86.         --last;
  87.     }
  88.     for (int i = 0; i < n; i++)
  89.         cout << tab_int[i] << " ";
  90.     cout << endl;
  91. }
  92.  
  93. void f2(int n, int tab_empty) {
  94.  
  95.     if (tab_empty == 1)
  96.         read(n);
  97.  
  98.     float suma = 0;
  99.     int temp[MAX_N];
  100.     for (int i = 0; i < n; i++) {
  101.         temp[i] = tab_int[i] * tab_int[i];
  102.         suma = suma + temp[i];
  103.     }
  104.     cout << floor(sqrt(suma));
  105.     cout << endl;
  106. }
  107.  
  108. void f3(int n, int tab_empty) {
  109.  
  110.     if (tab_empty == 1)
  111.         read(n);
  112.  
  113.     float average;
  114.     float stDev = 0.0;
  115.     float tempDev;
  116.     float innerTemp = 0;
  117.     int suma = 0;
  118.  
  119.     for (int i = 0; i < n; i++) {
  120.  
  121.         suma = suma + tab_int[i];
  122.     }
  123.  
  124.     average = suma / n;
  125.  
  126.     for (int i = 0; i < n; i++) {
  127.  
  128.         tempDev = tab_int[i] - average;
  129.         innerTemp += tempDev * tempDev;
  130.     }
  131.  
  132.     stDev = innerTemp / n;
  133.     cout << floor(sqrt(stDev));
  134.     cout << endl;
  135. }
  136.  
  137. int main() {
  138.     int subprogram, n;
  139.     while (cin >> subprogram >> n) {
  140.         switch (subprogram) {
  141.         case 0:
  142.             f0(n, 1, 0, true); // wywolanie 1 bo chcemy wpisac do tablicy, 0 bo zaczynamy od 0 indeksu, true bo chcemy wypisac, brzydko wyglada ale dziala xd
  143.             break;
  144.         case 1:
  145.             f1(n, 1); // wywolanie z 1 bo chcemy wpisac do tablicy
  146.             break;
  147.         case 2:
  148.             f2(n, 1);
  149.             break;
  150.         case 3:
  151.             f3(n, 1);
  152.             break;
  153.         case 4:
  154.             f4(n, 1);
  155.             break;
  156.         }
  157.     };
  158.     return 0;
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement