forked from goupix/Projet_EColi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLignee_B.cpp
executable file
·111 lines (70 loc) · 1.92 KB
/
Lignee_B.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//==============================
// INCLUDES
//==============================
#include "Lignee_B.h"
#include <iostream>
using std::cout;
using std::endl;
//==============================
// DEFINITION STATIC ATTRIBUTES
//==============================
int Lignee_B::compteur_B = 0; //On initialise notre compteur à 0
//==============================
// CONSTRUCTORS
//==============================
Lignee_B::Lignee_B(){
compteur_B++;
type='B';
Rbb=0.1;
Rbc=0.1;
}
Lignee_B::Lignee_B(float a, float b, float c){
compteur_B++;
type='B';
A_int=a;
B_int=b;
C_int=c;
Rbb=0.1;
Rbc=0.1;
}
//==============================
// DESTRUCTOR
//==============================
Lignee_B::~Lignee_B(){
compteur_B--;
}
//==============================
// PUBLIC METHODS
//==============================
Bacterie* Lignee_B::Division(){
A_int = A_int/2.0;
B_int = B_int/2.0;
C_int = C_int/2.0;
Lignee_B* newcell = new Lignee_B(A_int, B_int, C_int); //nouvelle bactérie de type B qui récupère les nouveaux attributs
return newcell;
}
void Lignee_B::Describe(){
cout<< "Cette bactérie de type " <<type<<" présente une concentration interne en A: "<<A_int<<", en B: "<<B_int<<" et en C: "<<C_int<<endl<<" ainsi qu'une fitness de "<<w<<endl;
}
int Lignee_B::Death(){ return Bacterie::Death();}
char Lignee_B::Gettype(){return Bacterie::Gettype();}
int Lignee_B::Mute(){return Bacterie::Mute();}
float Lignee_B::GetA_int(){return A_int;}
float Lignee_B::GetB_int(){return B_int;}
float Lignee_B::GetC_int(){return C_int;}
float& Lignee_B::Getw(){return w;}
int Lignee_B::nombre_B()
{
return compteur_B; //On renvoie simplement la valeur du compteur
}
float Lignee_B::absorb(float c, float h){
float newb=c;
float newbint=B_int;
float newcint=C_int;
newb+=h*(-Rbb*c);
newbint+=h*(Rbb*c-Rbc*B_int);
newcint+=h*(Rbc*B_int);
B_int=newbint;
C_int=newcint;
return newb;
}