Pràctica PRO2. Aplicació per a un laboratori de biologia.  16-12-2017
Mètodes públics | Mètodes Privats | Mètodes Privats Estàtics | Atributs Privats | Llista de tots els membres
Referència de la Classe Cjt_individus

Representa el conjunt d'individus d'un experiment. Més...

Mètodes públics

 Cjt_individus ()
 Creadora per defecte. Més...
 
void afegir_tret (int id, string tret)
 Modificadora dels individus que presenten el tret. Més...
 
void treure_tret (int id, string tret)
 Modificadora dels individus que presenten el tret. Més...
 
Cromosomes consultar_crom_individu (int id) const
 Consulta els cromosomes d'un individu. Més...
 
bool individu_te_tret (int id, string tret)
 Consulta si l'individu té el tret. Més...
 
void llegir (int n, int m)
 Operació de lectura. Més...
 
void escriure (int id) const
 Operació d'escriptura de l'individu. Més...
 
void escriure_distribucio_tret (string tret)
 Operació d'escriptura de la distribució del tret. Més...
 

Mètodes Privats

void distribucio (const BinTree< int > &a, BinTree< int > &dist, string tret)
 Operació que obté la distribució d'un tret. Més...
 

Mètodes Privats Estàtics

static void llegir_arbre_genealogic (BinTree< int > &abregen)
 Operació de lectura de l'arbre genealògic. Més...
 
static void escriure_distribucio (const BinTree< int > &dist)
 Operació d'escriptura de la distribució del tret. Més...
 

Atributs Privats

BinTree< int > arbregen
 Arbre genealogic, on cada node té l'identificador d'un individu. Més...
 
vector< Individuindividus
 Vector d'individus. Més...
 

Descripció Detallada

Representa el conjunt d'individus d'un experiment.

Ofereix operacions de lectura de l'experiment, escriptura i consultes d'un individu.

Definició a la línia 24 del fitxer Cjt_individus.hh.

Documentació del Constructor i el Destructor

Cjt_individus::Cjt_individus ( )

Creadora per defecte.

Precondició
cert
Postcondició
El resultat es un Cjt_individus buit

Definició a la línia 7 del fitxer Cjt_individus.cc.

7 {}

Documentació de les Funcions Membre

void Cjt_individus::afegir_tret ( int  id,
string  tret 
)

Modificadora dels individus que presenten el tret.

Precondició
cert
Postcondició
S'afegeix el tret a l'individu

Definició a la línia 19 del fitxer Cjt_individus.cc.

20 {
21  individus[id-1].afegir(tret);
22 }
vector< Individu > individus
Vector d&#39;individus.
void Cjt_individus::treure_tret ( int  id,
string  tret 
)

Modificadora dels individus que presenten el tret.

Precondició
cert
Postcondició
Es treu el tret de l'individu

Definició a la línia 24 del fitxer Cjt_individus.cc.

25 {
26  individus[id-1].treure(tret);
27 }
vector< Individu > individus
Vector d&#39;individus.
Cromosomes Cjt_individus::consultar_crom_individu ( int  id) const

Consulta els cromosomes d'un individu.

Precondició
cert
Postcondició
Indica els cromosomes d'un individu

Definició a la línia 9 del fitxer Cjt_individus.cc.

10 {
11  return individus[id-1].consultar_crom();
12 }
vector< Individu > individus
Vector d&#39;individus.
bool Cjt_individus::individu_te_tret ( int  id,
string  tret 
)

Consulta si l'individu té el tret.

Precondició
cert
Postcondició
Indica si presenta el tret

Definició a la línia 14 del fitxer Cjt_individus.cc.

15 {
16  return individus[id-1].te_tret(tret);
17 }
vector< Individu > individus
Vector d&#39;individus.
void Cjt_individus::llegir ( int  n,
int  m 
)

Operació de lectura.

Precondició
Estàn preparats al canal estàndard d'entrada un enter n >= 3, que representa el nombre d'individus, i el nombre de gens de cada cromosoma m >= 1
Postcondició
El parametre implícit conté el conjunt d'individus llegit del canal estandard d'entrada

Definició a la línia 43 del fitxer Cjt_individus.cc.

44 {
45  individus = vector<Individu>(n);
47  for(int j = 0; j < n; ++j) {
48  Individu x;
49  x.llegir_individu(m);
50  individus[j] = x;
51  }
52 }
Representa les característiques d&#39;un individu.
Definition: Individu.hh:24
void llegir_individu(int m)
Operació de lectura.
Definition: Individu.cc:36
vector< Individu > individus
Vector d&#39;individus.
BinTree< int > arbregen
Arbre genealogic, on cada node té l&#39;identificador d&#39;un individu.
static void llegir_arbre_genealogic(BinTree< int > &abregen)
Operació de lectura de l&#39;arbre genealògic.
void Cjt_individus::escriure ( int  id) const

Operació d'escriptura de l'individu.

Precondició
cert
Postcondició
S'escriu pel el canal de sortida estàndard l'individu

Definició a la línia 54 del fitxer Cjt_individus.cc.

55 {
56  individus[id-1].escriure_individu();
57 }
vector< Individu > individus
Vector d&#39;individus.
void Cjt_individus::escriure_distribucio_tret ( string  tret)

Operació d'escriptura de la distribució del tret.

Precondició
cert
Postcondició
S'escriu pel canal de sortida estàndard la distribució

Definició a la línia 92 del fitxer Cjt_individus.cc.

93 {
94  BinTree<int> dist;
95  cout << " ";
96  distribucio(arbregen, dist, tret);
98  cout << endl;
99 }
static void escriure_distribucio(const BinTree< int > &dist)
Operació d&#39;escriptura de la distribució del tret.
BinTree< int > arbregen
Arbre genealogic, on cada node té l&#39;identificador d&#39;un individu.
void distribucio(const BinTree< int > &a, BinTree< int > &dist, string tret)
Operació que obté la distribució d&#39;un tret.
void Cjt_individus::llegir_arbre_genealogic ( BinTree< int > &  abregen)
staticprivate

Operació de lectura de l'arbre genealògic.

Precondició
cert
Postcondició
Es llegeix pel canal estàndard d'entrada la relació de parentiu i es forma l'arbre genealògic

Definició a la línia 29 del fitxer Cjt_individus.cc.

30 {
31 // Es llegeix l'abre en preordre
32  int x;
33  cin >> x;
34  if (x!=0){
35  BinTree<int> l;
37  BinTree<int> r;
39  a=BinTree<int>(x,l,r);
40  }
41 }
static void llegir_arbre_genealogic(BinTree< int > &abregen)
Operació de lectura de l&#39;arbre genealògic.
void Cjt_individus::escriure_distribucio ( const BinTree< int > &  dist)
staticprivate

Operació d'escriptura de la distribució del tret.

Precondició
cert
Postcondició
S'escriu pel canal de sortida estàndard la distribució d'un tret en inordre

Definició a la línia 81 del fitxer Cjt_individus.cc.

82 {
83 // Escriu arbre en inordre
84  if (not a.empty()) {
85  int x = a.value();
86  escriure_distribucio(a.left());
87  cout << " " << x;
88  escriure_distribucio(a.right());
89  }
90 }
static void escriure_distribucio(const BinTree< int > &dist)
Operació d&#39;escriptura de la distribució del tret.
void Cjt_individus::distribucio ( const BinTree< int > &  a,
BinTree< int > &  dist,
string  tret 
)
private

Operació que obté la distribució d'un tret.

Precondició
cert
Postcondició
Es forma un nou subarbre de la distribució

Definició a la línia 59 del fitxer Cjt_individus.cc.

60 {
61  if(!a.empty()) {
62  int x = a.value();
63  if(a.left().empty()) {// Fulla
64  if(individus[x-1].te_tret(tret)) dist = BinTree<int>(x);
65  else dist = BinTree<int>();
66  }
67  else {
68  BinTree<int> l;
69  BinTree<int> r;
70  distribucio(a.left(),l,tret);
71  distribucio(a.right(),r,tret);
72  if(individus[x-1].te_tret(tret)) dist = BinTree<int>(x, l, r);
73  else {
74  if(l.empty() and r.empty()) dist=BinTree<int>();// Si no té el tret i els progenitors tampoc llavors arbre buit
75  else dist=BinTree<int>(-x,l,r);// Si no té el tret pero si els progenitors llavors s'afegeix amb signe '-'
76  }
77  }
78  }
79 }
bool empty() const
Definition: BinTree.hh:59
vector< Individu > individus
Vector d&#39;individus.
const T & value() const
Definition: BinTree.hh:76
void distribucio(const BinTree< int > &a, BinTree< int > &dist, string tret)
Operació que obté la distribució d&#39;un tret.
BinTree left() const
Definition: BinTree.hh:64
BinTree right() const
Definition: BinTree.hh:70

Documentació de les Dades Membre

BinTree<int> Cjt_individus::arbregen
private

Arbre genealogic, on cada node té l'identificador d'un individu.

Definició a la línia 29 del fitxer Cjt_individus.hh.

vector<Individu> Cjt_individus::individus
private

Vector d'individus.

Ordenat creixentment segons el seu identificador

Definició a la línia 34 del fitxer Cjt_individus.hh.


La documentació d'aquesta classe es va generar a partir dels següents fitxers: