summaryrefslogtreecommitdiff
path: root/Settings/Settings.cpp
diff options
context:
space:
mode:
authorGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:12:36 +0200
committerGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:12:36 +0200
commitb4c345e6a5fa929ba20eac19183b9c777055f52d (patch)
tree23a0232f2526c5ab7f53391609a8a0a5960865f0 /Settings/Settings.cpp
Initial commit
Diffstat (limited to 'Settings/Settings.cpp')
-rw-r--r--Settings/Settings.cpp105
1 files changed, 105 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;
+}