-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCoord.hpp
More file actions
119 lines (86 loc) · 2.97 KB
/
Coord.hpp
File metadata and controls
119 lines (86 loc) · 2.97 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
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
111
112
113
114
115
116
117
118
119
#ifndef Coord_HPP
#define Coord_HPP
#include <vector>
#include <string>
#include <iostream>
const int TAILLEGRILLE = 20;
class Coord{
// Attribus
int lig_; // La ligne où se positionne la coordonnée
int col_; // La colonne où se positionne la coordonnée
public:
//Constructeur
//* @param[in] lig : la ligne
//* @param[in] col : la colonne
//* @param[out] c : [Coord] la coordonnée
//* [error] lève une erreur si la ligne
//* ou la colonne <0 ou >TAILLEGRILLE-1
Coord(int lig, int col);
//Methodes
//* Retourne la ligne d'une coordonnée
//* @return : [int] lig
int get_lig() const;
//* Retourne la colonne d'une coordonnée
//* @return : [int] col
int get_col() const;
};
// Surcharge d'opérateurs de coordonnées
// L'affichage
std::ostream& operator<<(std::ostream& out, Coord c);
// L'opérateur ==
bool operator==(const Coord& a, const Coord& b);
// L'opérateur !=
bool operator!=(const Coord& a, const Coord& b);
class EnsCoord{
// Attribus
std::vector<Coord> tab_; // Un vecteur contenant les coordonnées
// Méthodes
//* @param[in] c : la coordonnée recherchée
//* @param[out] i : [int] l'indice de la première
//* apparition de la coordonnée dans l'ensemble de coordonnées
int Position(Coord c)const;
public:
//Constructeur
//* @param[out] tab: [EnsCoord] un ensemble de coordonnées vide
EnsCoord();
//* @param[in] t : un vecteur de Coord
//* @param[out] tab: [EnsCoord] ensemble de coordonnées
EnsCoord(std::vector<Coord> Ens);
// Getter
//* @param[out] tab: [vector<Coord>] le tableau
//* de l'ensemble de coordonnées
std::vector<Coord> get_tab() const;
// Méthodes
//* @param[in] c : la coordonnée recherchée
//* @param[out] : [bool] true si la coordonnée
//* est dans l'ensemble, false sinon
bool contient(Coord c) const;
//* @param[in] c : la coordonnée à ajouter
//* ne la rajoute que si elle n'y est pas déjà
void ajoute(Coord c);
//* @param[in] c : la coordonnée à supprimer
//* [error] revoie une erreur si elle n'y est pas
void supprime(Coord c);
//* @param[out] : [bool] true si l'EnsCoord est vide
//* false sinon
bool estVide()const;
//* @param[out] : [int] la taille de l'EnsCoord
int taille()const;
//* @param[in] n : la position de la coordonnée
//* @param[out] : [Coord] la n-ième coordonnée
//* lève une erreur si n < 0 ou n > taille()-1
Coord iem(int n)const;
//* @param[out] : [Coord] une coordonnée au hasard
//* [error] lève une erreur si l'EnsCoord est vide
Coord choixHasard();
std::ostream& print(std::ostream& out) const;
};
std::ostream &operator<<(std::ostream &out, const EnsCoord &coordtotal);
bool operator==(EnsCoord const& a, EnsCoord const& b);
//* @param[in] c : la coordonnée
//* @param[out] v : [EnsCoord] toutes les
//* coordonnées voisines
EnsCoord voisines(Coord c);
// Fonction pour tester affichages
void testAffichageCoordonnees();
#endif