Advertisement
Guest User

multiplynumbers

a guest
Mar 6th, 2015
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.84 KB | None | 0 0
  1. /**
  2.  * @brief multiplyNumbers vypocita soucin cisel v poli numbers,
  3.  * ktere jsou z intervalu 1 az bound (vcetne)
  4.  * Pokud se v poli zadna takova cisla nenachazeji, vrati 1
  5.  * @param bound horni hranice intervalu pro cisla, ktera se zapocitavaji
  6.  * @param numbers pole cisel k pocitani soucinu
  7.  * @param count pocet cisel v poli count
  8.  *
  9.  * @return soucin cisel v intervalu, pokud zadna cisla nejsou, pak 1
  10.  *
  11.  * TODO: opravit tuto funkci
  12.  */
  13. int multiplyNumbers(unsigned int bound, int *numbers, unsigned int count) {
  14.    
  15.    int *array = (int *) malloc(bound * sizeof(int));    ///vytvori pole a naalokuje pamet velikosti bound (test c. 11 -> bound = 4)
  16.  
  17.  
  18.     memset(array, 0, bound * sizeof(int));      ///nastavi kazdou hodnotu vyse zmineneho pole na 0
  19.                            
  20.     for (unsigned int i = 0; i < count; ++i) {
  21.         array[numbers[i]] += 1;
  22.     }                   ///po provedeni cyklu by to melo vypadat nasledovne:
  23.                     ///dejme tomu, ze do funkce vlezly hodnoty z testu c. 11 tj.
  24.                     ///bound = 4, count = 4, a numbers[3,3,3,2], cyklus ovsem do pole array neuklada hodnoty
  25.                         ///z pole numbers primo - array nyni vypada takto: array[0,0,0,0] - po cyklu vypada
  26.                     ///takto: array[0,0,1,3] - vysvetlim princip: kazde misto v poli ma svuj index, v cecku
  27.                     ///se zacina od nuly takze pole array pred cyklem vypada takto: 0 1 2 3
  28.                     ///                           array[0,0,0,0]
  29.  
  30.                     ///                           po cyklu: 0 1 2 3
  31.                     ///                           array[0,0,1,3]
  32.                     ///to znamena, ze do pole array jsme de facto ulozili mnozstvi jednotlivych cisel
  33.                     ///z pole numbers - dvojka je tam jednou, proto pod indexem "2" najdeme cislo 1,
  34.                     ///trojka je tam trikrat, proto pod indexem "3" najdeme cislo 3.                   
  35.     int val = 1;
  36.     for (unsigned int i = 0; i < bound; ++i) {
  37.         for (int j = 0; j < array[i]; ++j) {
  38.             val *= i;
  39.         }
  40.     }
  41.     return val;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement