Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @brief multiplyNumbers vypocita soucin cisel v poli numbers,
- * ktere jsou z intervalu 1 az bound (vcetne)
- * Pokud se v poli zadna takova cisla nenachazeji, vrati 1
- * @param bound horni hranice intervalu pro cisla, ktera se zapocitavaji
- * @param numbers pole cisel k pocitani soucinu
- * @param count pocet cisel v poli count
- *
- * @return soucin cisel v intervalu, pokud zadna cisla nejsou, pak 1
- *
- * TODO: opravit tuto funkci
- */
- int multiplyNumbers(unsigned int bound, int *numbers, unsigned int count) {
- int *array = (int *) malloc(bound * sizeof(int)); ///vytvori pole a naalokuje pamet velikosti bound (test c. 11 -> bound = 4)
- memset(array, 0, bound * sizeof(int)); ///nastavi kazdou hodnotu vyse zmineneho pole na 0
- for (unsigned int i = 0; i < count; ++i) {
- array[numbers[i]] += 1;
- } ///po provedeni cyklu by to melo vypadat nasledovne:
- ///dejme tomu, ze do funkce vlezly hodnoty z testu c. 11 tj.
- ///bound = 4, count = 4, a numbers[3,3,3,2], cyklus ovsem do pole array neuklada hodnoty
- ///z pole numbers primo - array nyni vypada takto: array[0,0,0,0] - po cyklu vypada
- ///takto: array[0,0,1,3] - vysvetlim princip: kazde misto v poli ma svuj index, v cecku
- ///se zacina od nuly takze pole array pred cyklem vypada takto: 0 1 2 3
- /// array[0,0,0,0]
- /// po cyklu: 0 1 2 3
- /// array[0,0,1,3]
- ///to znamena, ze do pole array jsme de facto ulozili mnozstvi jednotlivych cisel
- ///z pole numbers - dvojka je tam jednou, proto pod indexem "2" najdeme cislo 1,
- ///trojka je tam trikrat, proto pod indexem "3" najdeme cislo 3.
- int val = 1;
- for (unsigned int i = 0; i < bound; ++i) {
- for (int j = 0; j < array[i]; ++j) {
- val *= i;
- }
- }
- return val;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement