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
| //début de l'en-tête, si tu en fais un
#ifndef INCLUDE__PROTECTION__random_grid
#define INCLUDE__PROTECTION__random_grid
//maintenant, je sais que l'en-tête ne sera pas inclus deux fois.
#include<ostream>
#include<vector>
#include<array>
#include<cstdlib>
template <typename T>
void aleatoiriser(std::vector<T> & nombres, std::array<T,2> const& minmax){
for (T& n : nombres) {
n=(minmax[0] + (minmax[1]-minmax[0])*(T)(std::rand()/(RAND_MAX + 1.0)));
}
}
}
template <typename T>
void aleatoiriser(std::vector<std::vector<T>> & grille, std::array<T,2> const& minmax){
for (std::vector<T>& ligne : grille) {
aleatoiriser(ligne, minmax);//détection automatique de aleatoiriser<T>(ligne, minmax)
}
}
template <typename T>
std::ostream& operator<<(std::ostream& stream, std::vector<std::vector<T>> const& grille) {
for (auto const& ligne : grille) {//auto permet de ne pas préciser le type, vu qu'il est contraint par le reste du code
for (auto const& d : ligne) {//de même
stream << d <<' ';
}
stream<<'\n';
}
return stream;
}
#endif
//fin de l'en-tête
#include<iostream>
#include <ctime>
//#include "random_grid.hpp"
//"using namespace ...;" ne doit pas être utilisé dans un en-tête.
using namespace std;
int main() {
srand(time(NULL));
array<double,2> bornes={-5,5};
vector<vector<double>> vekky(2, vector<double>(20));
aleatoiriser(vekky, bornes);
cout << vekky << flush;
array<int,2> ibornes={-5,5};
vector<vector<int>> entiers(2, vector<int>(20));
aleatoiriser(entiers, bornes);
cout << entiers << flush;
return 0;
} |
Partager