#include Cluster::Cluster(string name) { namn_=name; ant_=0; centroid_=new Hashtab(); } string Cluster::name() { return namn_; } Cluster::~Cluster() { delete centroid_; } Hashtab* Cluster::centroid() { return centroid_; } void Cluster::hangon(Hashtab* newone) { ant_++; medl_.insert(medl_.end(), newone); } int Cluster::ant() { return ant_; } Hashtab* Cluster::medl(int nr) { return medl_[nr]; } void Cluster::ready() //beräknar ett klusters centroid { BinTree* tmp; for (int i=0;ibtree()->min(); while (tmp->next(tmp->nGnr())!=0) { centroid()->btree()->set(tmp->nGnr(),tmp->ant()/ant()); tmp=tmp->next(tmp->nGnr()); } } /* Vad är detta? int remaining=ant_; //antal binärträd som inte tagit slut Vec tmp(remaining); for (int i=0;ibtree()->min(); int min_i=0; BinTree* min_p=tmp[min_i]; longint min_nGnr=min_p->nGnr(); for (i=0;inGnr()nGnr(); } } while (remaining>0) //flytta hela tiden fram pekaren i det "bakersta" trädet { int sum=0; for (i=0;inGnr()==min_nGnr) sum++; } centroid_->btree()->set(min_nGnr,sum/ant_); if (min_p->next(min_p->nGnr())==0) { delete tmp[i]; //ta bort vektorelementet då listan är nästan slut remaining--; } else { tmp[min_i]=tmp[min_i]->next(tmp[min_i]->nGnr()); min_p=tmp[min_i]; min_nGnr=min_p->nGnr(); } for (i=0;inGnr()nGnr(); } } } */ } void Cluster::display() { char ch; cout<<"Cluster "<filn()<<" ("; cout<comp(centroid_)<<")\n"; } } void Cluster::setname() { string namn; cout<<"Please name this cluster: "; cin>>namn; namn_=namn; } void Cluster::zoomin() //returnerar en pekare till samma kluster, { //men nu centrerat kring origo for (int i=0;ihangon(medl(i)); this->medl(i)-centroid(); //ändra operatorn i Hashtab //häng på hashtabellerna - centroiden hos det gamla klustret } }