diff options
| author | Gaspard Coulet <gaspard.coulet@mines-ales.org> | 2021-04-28 23:12:36 +0200 |
|---|---|---|
| committer | Gaspard Coulet <gaspard.coulet@mines-ales.org> | 2021-04-28 23:12:36 +0200 |
| commit | b4c345e6a5fa929ba20eac19183b9c777055f52d (patch) | |
| tree | 23a0232f2526c5ab7f53391609a8a0a5960865f0 /Settings | |
Initial commit
Diffstat (limited to 'Settings')
| -rw-r--r-- | Settings/Settings.cpp | 105 | ||||
| -rw-r--r-- | Settings/Settings.h | 20 |
2 files changed, 125 insertions, 0 deletions
diff --git a/Settings/Settings.cpp b/Settings/Settings.cpp new file mode 100644 index 0000000..138eea5 --- /dev/null +++ b/Settings/Settings.cpp @@ -0,0 +1,105 @@ +#include "Settings.h" +#include<iostream> +#include <fstream> +#include <sstream> +#include<string> +#include <stdlib.h> + +/** +* Constructeur +* @method settings::settings +* @param fileName Nom du fichier +*/ +Settings::Settings(char const * fileName){ + std::cout<<"Number of Hidden Layers : "; + std::cin>>nbrHiddenLayers; + archi = new std::vector<int>(nbrHiddenLayers+2); + for(int i=0;i<nbrHiddenLayers;i++){ + std::cout<<" | Number of Neurons in Layer "<<i+1<<" : "; + std::cin>>(*archi)[i+1]; + } + + /** + * Counter + */ + std::ifstream in(fileName); + std::string ligne; + int nbLignes = 0; + while(std::getline(in, ligne)){ + nbLignes++; + } + in.close(); + + /** + * Parser + */ + std::ifstream fichier(fileName, std::ios::in); + if(fichier){ + std::vector< std::vector <double> > stock(nbLignes); // Tableau de chaine de caractère qui va contenir tout le fichier ligne par ligne. + std::cout << "\033[1;36m file " << "\033[1;31m" << fileName << "\033[1;36m opened with success , nbLignes= " <<nbLignes<<"\033[0m"<< std::endl; + std::string s; + double temp = 1; + std::string ligne; + + for (int j = 0; j < nbLignes; j++) { + fichier>>ligne; + std::stringstream ss(ligne); + /** strinsplit à partir du caractère ',' */ + while (getline(ss, s, ',')) { + temp = atof(s.c_str()); + stock[j].push_back(temp); // On stock chaque information dans une case. + } + } + fichier.close(); + (*archi)[0] = (stock[0].size())-1; + for (unsigned int i = 0; i < stock.size(); i++){ + temp=stock[i][stock[i].size()-1]; + if (!(exists(temp,differentOutputs))){ + differentOutputs->push_back(temp); + } + } + (*archi)[(archi->size())-1] = (differentOutputs->size()); + } + else { + std::cerr << "\033[0;31m ERROR [ "<< "Can't open file" << " IN FILE " << __FILE__ << " AT LINE " << __LINE__ << " ] \n \033[0m"; + } +} + +/** +* @method settings::getNbrHiddenLayers +* @return Nombre de Layers "caché" +*/ +int Settings::getNbrHiddenLayers(){ + return nbrHiddenLayers; +} + +/** +* @method settings::getArchi +* @return Architecture +*/ +std::vector<int>* Settings::getArchi(){ + return archi; +} + +/** +* @method settings::getDifferentOutputs +* @return DifferentOutputs +*/ +std::vector<double>* Settings::getDifferentOutputs(){ + return differentOutputs; +} + +/** +* @method exists +* @param n Valeur +* @param tab Vecteur +* @return True si Valeur n et dans Vecteur tab +*/ +bool exists(double n,std::vector<double>* tab){ + for(unsigned int i=0;i<tab->size();i++){ + if((*tab)[i]==n){ + return true; + } + } + return false; +} diff --git a/Settings/Settings.h b/Settings/Settings.h new file mode 100644 index 0000000..1503cfe --- /dev/null +++ b/Settings/Settings.h @@ -0,0 +1,20 @@ +#ifndef SETTINGS_H +#define SETTINGS_H +#include<vector> + +class Settings{ +private: + int nbrHiddenLayers; + std::vector<int>* archi; + std::vector<double>* differentOutputs = new std::vector<double>; +public: + Settings(char const * fileName); + int getNbrHiddenLayers(); + std::vector<int>* getArchi(); + std::vector<double>* getDifferentOutputs(); + +}; + +bool exists(double n,std::vector<double>* tab); + +#endif |
