void Cluster::pickCentroids(unsigned int k, Point **pointArray) { try { if (k >= __size) { for (int i = 0; i < k; i++) { if (i < __size) { *pointArray[i] = (*this)[i]; } else { for (int j = 0; j < pointArray[i]->getDims(); j++) { pointArray[i][j] = std::numeric_limits<double>::max(); } } } } else { double x = static_cast<double>(__size) / k; for (int i = 0; i < k; i++) { *pointArray[i] = (*this)[static_cast<int>(i * x)]; } } } catch(ZeroDimensionsEx) { std::cout << ZeroDimensionsEx(); } }
Cluster::Cluster(unsigned int d) : centroid(d,*this){ if(d == 0){ throw ZeroDimensionsEx(); } __size = 0; __points = nullptr; __dimensionality = d; __id = __idGenerator++; }