Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #define MAX_N 10000
- using namespace std;
- int tab_int[MAX_N];
- void read(int n) {
- for (int i = 0; i < n; i++)
- cin >> tab_int[i];
- }
- /*
- @param int n - rozmiar tablicy podawan przez uzytkownika na poczatku programu
- @param int tab_empty - steruje wpisywaniem do tablicy powinien tutaj byc bool co byloby duzo ladniejszym rozwiazaniem ale wtedy nie przeszloby testu
- a najlepszym rozwiazaniem byloby przekaznie tablicy, a jej wypelnienie zostawic osobnej funkcji ale to tez nie przeszloby testu
- @param int startIteration - parametr mowiacy nam od kiedy rozpoczac iterowanie przy znajdowanie najmniejszego elementu
- szczerze mowiac jest on nie ptorzebny i stworzony jedynie sztucznie przez imo zle sformulowane zadanie ktore wymaga od nas uzycia funkcji f0 w f1,
- co mialoby sens gdyby funckja f0 zwracala tylko najmniejszy indeks a nie wypisywala wartosci
- @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)
- 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
- */
- int f0(int n, int tab_empty, int startIteration, bool write) {
- if (tab_empty == 1) // jesli 1 to wpisz wartosci do tablicy
- read(n);
- 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
- int positionOfSmallest = startIteration; // j.w
- for (int i = startIteration; i < n; i++) {
- if (tab_int[i] < Smallest) { // jesli aktualny element mniejszy od najmniejszego to ustaw go jako najmniejszy
- positionOfSmallest = i;
- Smallest = tab_int[i];
- }
- }
- if (write == true) {
- for (int i = 0; i < n; i++) {
- if (tab_int[i] == Smallest) {
- cout << i + 1 << " ";
- }
- }
- }
- return positionOfSmallest;
- }
- void f1(int n, int tab_empty) {
- if (tab_empty == 1)
- f0(n, tab_empty, 0, false); // wypelnienie tablicy
- for (int i = 0; i < n; i++) {
- 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
- // zamien wartosc spod kolejnego indeksu na mniejsza wartosc (porzadkowanie tablicy)
- int temp = tab_int[indexOfsmallest];
- tab_int[indexOfsmallest] = tab_int[i];
- tab_int[i] = temp;
- }
- for (int i = n - 1; i >= 0; i--)
- cout << tab_int[i] << " "; // wypisanie uporzadkowanych wartosci
- }
- void swap(int *x, int *y)
- {
- int temporary = *x; // przypisz wartosc spod wskaznika x do zmiennej temp
- *x = *y; // zamien wartosc x na wartosc y
- *y = temporary; // zamien wartosc y na wartosc temporary(czyli x)
- }
- void f4(int n, int tab_empty) {
- if (tab_empty == 1)
- read(n);
- int *first = tab_int;
- int *last = first + n - 1;
- while (first < last) {
- swap(first, last);
- ++first;
- --last;
- }
- for (int i = 0; i < n; i++)
- cout << tab_int[i] << " ";
- cout << endl;
- }
- void f2(int n, int tab_empty) {
- if (tab_empty == 1)
- read(n);
- float suma = 0;
- int temp[MAX_N];
- for (int i = 0; i < n; i++) {
- temp[i] = tab_int[i] * tab_int[i];
- suma = suma + temp[i];
- }
- cout << floor(sqrt(suma));
- cout << endl;
- }
- void f3(int n, int tab_empty) {
- if (tab_empty == 1)
- read(n);
- float average;
- float stDev = 0.0;
- float tempDev;
- float innerTemp = 0;
- int suma = 0;
- for (int i = 0; i < n; i++) {
- suma = suma + tab_int[i];
- }
- average = suma / n;
- for (int i = 0; i < n; i++) {
- tempDev = tab_int[i] - average;
- innerTemp += tempDev * tempDev;
- }
- stDev = innerTemp / n;
- cout << floor(sqrt(stDev));
- cout << endl;
- }
- int main() {
- int subprogram, n;
- while (cin >> subprogram >> n) {
- switch (subprogram) {
- case 0:
- 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
- break;
- case 1:
- f1(n, 1); // wywolanie z 1 bo chcemy wpisac do tablicy
- break;
- case 2:
- f2(n, 1);
- break;
- case 3:
- f3(n, 1);
- break;
- case 4:
- f4(n, 1);
- break;
- }
- };
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement