-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathremplissageMatrice.cpp
More file actions
65 lines (53 loc) · 1.47 KB
/
remplissageMatrice.cpp
File metadata and controls
65 lines (53 loc) · 1.47 KB
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
#include "remplissageMatrice.h"
using namespace std;
remplissageMatrice::remplissageMatrice()
{
}
remplissageMatrice::remplissageMatrice(const Megalopole& megalopolis)
{
int tailleMatrice= megalopolis.get_villes().size();
nb_elem= tailleMatrice;
const std::vector<Ville> villes= megalopolis.get_villes();
Ville ville_i, ville_j;
//declaration tableau dynamique
distance= new double*[tailleMatrice];
for (int i= 0; i<tailleMatrice; ++i){
distance[i] = new double[tailleMatrice];
}
for(int i= 0; i<tailleMatrice; ++i){
ville_i= villes[i];
for(int j= 0; j<tailleMatrice; ++j){
ville_j= villes[j];
if(i == j) //distance de ville i a elle-meme
{
distance[i][j]= 0;
}
else //ville i et j differentes
{
int villeI_x= ville_i.get_x();
int villeI_y= ville_i.get_y();
int villeJ_x= ville_j.get_x();
int villeJ_y= ville_j.get_y();
double distanceij=sqrt((villeI_x-villeJ_x)*(villeI_x-villeJ_x)+(villeI_y-villeJ_y)*(villeI_y-villeJ_y));
distance[i][j]= distanceij;
}
}
}
}
void remplissageMatrice::affichage()
{
for(int i= 0; i<nb_elem; ++i){
for(int j= 0; j<nb_elem; ++j){
cout << distance[i][j] << " " ;
}
cout << endl;
}
}
double remplissageMatrice::evaluationCout(vector< int > villes_ordonnees) const
{
double res= 0.0;
for(unsigned int i= 0; i < villes_ordonnees.size()-1; ++i){
res += distance[villes_ordonnees[i]][villes_ordonnees[i+1]];
}
return res;
}