Commit 225fe7ba authored by david's avatar david
Browse files

Déplacement déclaration/définition analyzer.cpp

parent 070ae6b2
CC= g++ CC= g++
CXXFLAGS= -Wall -ansi --pedantic -g CXXFLAGS= -Wall -ansi --pedantic -g
CPP_O_FILE = arraylist.o main.o CPP_O_FILE = analyzer.o main.o
all: $(CPP_O_FILE) all: $(CPP_O_FILE)
$(CC) $(CXXFLAGS) -o arraylist_analysis $(CPP_O_FILE) $(CC) $(CXXFLAGS) -o arraylist_analysis $(CPP_O_FILE)
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include<cmath> #include<cmath>
#include <vector> #include <vector>
#include <iostream> #include <iostream>
#include <fstream>
/** /**
Classe utilisée pour faire des statistiques élémentaires Classe utilisée pour faire des statistiques élémentaires
...@@ -25,11 +24,7 @@ public: ...@@ -25,11 +24,7 @@ public:
Complexité amortie : O(1) Complexité amortie : O(1)
@param x est la valeur que l'on souhaite ajouter à l'analyse. @param x est la valeur que l'on souhaite ajouter à l'analyse.
*/ */
void append(const double & x){ void append(const double & x);
cost.push_back(x);
cumulative_cost.push_back( (cumulative_cost.size()) ? cumulative_cost.back()+x : x);
cumulative_square += x*x;
}
/** /**
Renvoie la somme des coûts enregistrés dans cette analyse. Renvoie la somme des coûts enregistrés dans cette analyse.
...@@ -55,23 +50,14 @@ public: ...@@ -55,23 +50,14 @@ public:
Complexité en temps/espace, meilleur cas : O(1) Complexité en temps/espace, meilleur cas : O(1)
@returns la moyenne des coûts de toutes les opérations enregistrées dans l'analyse. @returns la moyenne des coûts de toutes les opérations enregistrées dans l'analyse.
*/ */
double get_average_cost(){ double get_average_cost();
if(cumulative_cost.empty())
throw std::runtime_error("List is empty");
return cumulative_cost.back()/cumulative_cost.size();
}
/** /**
Renvoie la variance des coûts de toutes les opérations enregistrées dans l'analyse. Renvoie la variance des coûts de toutes les opérations enregistrées dans l'analyse.
Complexité en temps/espace, meilleur cas : O(1) Complexité en temps/espace, meilleur cas : O(1)
@returns la variance des coûts de toutes les opérations enregistrées dans l'analyse. @returns la variance des coûts de toutes les opérations enregistrées dans l'analyse.
*/ */
double get_variance(){ double get_variance();
double mean, mean_square;
mean = get_average_cost();
mean_square = mean * mean;
return cumulative_square - mean_square;
}
/** /**
Renvoie l'écart-type des coûts de toutes les opérations enregistrées dans l'analyse. Renvoie l'écart-type des coûts de toutes les opérations enregistrées dans l'analyse.
...@@ -87,24 +73,12 @@ public: ...@@ -87,24 +73,12 @@ public:
Complexité en temps, meilleur/pire cas : O(size) Complexité en temps, meilleur/pire cas : O(size)
@param path est le chemin du fichier dans lequel la sauvegarde est faite. @param path est le chemin du fichier dans lequel la sauvegarde est faite.
*/ */
void save_values(const std::string & path){ void save_values(const std::string & path);
std::ofstream f;
size_t i;
f.open(path.c_str());
for (i = 0; i < cost.size(); ++i)
f<<i<<" "<<cost.at(i)<<" "<<get_amortized_cost(i)<<std::endl;
f.close();
}
/** /**
Affiche la liste des coûts et des coûts amortis sur la sortie standard. Affiche la liste des coûts et des coûts amortis sur la sortie standard.
Complexité en temps, meilleur/pire cas : O(size) Complexité en temps, meilleur/pire cas : O(size)
*/ */
void plot_values(){ void plot_values();
size_t i;
for (i = 0; i < cost.size(); ++i)
std::cout<<i<<" "<<cost.at(i)<<" "<<get_amortized_cost(i)<<std::endl;
}
private: private:
// Coût de chaque opération. Peut représenter du temps ou une autre mesure. // Coût de chaque opération. Peut représenter du temps ou une autre mesure.
......
#include "arraylist.hpp"
template <typename P>
P ArrayList<P>::get(const int & pos){
return data[pos];
}
...@@ -62,7 +62,9 @@ public: ...@@ -62,7 +62,9 @@ public:
@param pos est la l'indice de la case on l'utilisateur veut connaître la valeur. @param pos est la l'indice de la case on l'utilisateur veut connaître la valeur.
@returns la valeur située à la position donnée par l'utilisateur. @returns la valeur située à la position donnée par l'utilisateur.
*/ */
P get(const int & pos); P get(const int & pos){
return data[pos];
}
/** /**
Renvoie le nombre d'éléments stockés dans le tableau. Renvoie le nombre d'éléments stockés dans le tableau.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment