#include <iostream>
#include <vector>
#include <ctime>
#include <limits>
#include <chrono>
#include <math.h>
using namespace std;
// Fonction pour calculer le temps écoulé en secondes
double calculerTemps(std::chrono::steady_clock::time_point debut,
std::chrono::steady_clock::time_point fin) {
// Calculer la différence entre les deux moments en nanosecondes
std::chrono::duration<double> temps_ecoule =
std::chrono::duration_cast<std::chrono::duration<double>>(fin - debut);
// Convertir la durée en secondes et la retourner
return temps_ecoule.count();
}
int mystere(const vector<bool>& T) {
int i = 0; // Initialisation de l'indice i
while (i < T.size() && !T[i]) { // Tant que i <= n et T[i] est faux
i++; // Incrémentation de i
}
if (i == T.size()) // Si aucun vrai n'est trouvé dans le tableau
return -1; // Retourne -1 pour indiquer l'absence de vrai
return i + 1; // Ajout de 1 car les indices en C++ commencent à 0
}
int main() {
int n;
cout << "Entrez la taille du tableau de booléens (maximum " <<
numeric_limits<int>::max() << ") : ";
cin >> n;
if (n <= 0) {
cout << "Taille invalide." << endl;
return 1; // Quitter le programme avec un code d'erreur
}
vector<bool> tableau(n); // Déclaration d'un vecteur de booléens de taille n
chrono::steady_clock::time_point debut, fin;
double temps_min = numeric_limits<double>::max(); // Initialiser à la plus
grande valeur possible
double temps_max = 0;
double temps_total = 0;
for (int i = 0; i < ; ++i) { // Modifier
// Générer un tableau de booléens aléatoire (juste pour illustrer, vous
pouvez le modifier selon vos besoins)
for (int j = 0; j < n; ++j) {
tableau[j] = rand() % 2; // Génère une valeur aléatoire (0 ou 1)
}
debut = chrono::steady_clock::now(); // Marquer le début du calcul
mystere(tableau); // Appeler la fonction mystere
fin = chrono::steady_clock::now(); // Marquer la fin du calcul
double temps_execution = calculerTemps(debut, fin);
temps_total += temps_execution;
if (temps_execution < temps_min) {
temps_min = temps_execution;
}
if (temps_execution > temps_max) {
temps_max = temps_execution;
}
}
// Calculer le temps moyen
// Calculer le temps moyen
double temps_moyen = temps_total / pow(2, n); // n étant la taille du tableau
// Afficher les temps d'exécution dans le terminal
cout << "Temps au mieux: " << temps_min << " secondes" << endl;
cout << "Temps au pire: " << temps_max << " secondes" << endl;
cout << "Temps moyen: " << temps_moyen << " secondes" << endl;
return 0;
}