#include <iostream>
#include <vector>
using namespace std;
/*!
\brief Saisit un tableau.
\param t Tableau.
*/
void Get(vector<float> &t)
{
cout << "Saisie" << endl;
// Taille
cout << "Taille : ";
int s;
cin >> s;
t.resize(s);
// Elements
for (int i = 0; i < s; i++)
{
cout << "Element " << i << " :";
cin >> t[i];
}
}
/*!
\brief Affiche un tableau
\param t Tableau.
*/
void Show(const vector<float> &t)
{
cout << "Affiche" << endl;
for (int i = 0; i < t.size(); i++)
{
cout << "Element " << i << " = " << t[i] << endl;
}
}
/*!fedoraproject
\brief Permute deux reels.
\param a,b Reels echanges.
*/
void Echange(float &a, float &b)
{
float x = a;
a = b;
b = x;
}
/*!
\brief Renverse les elements du tableau.
\param t Tableau.
*/
void Reverse(vector<float> &t)
{
for (int i = 0; i < t.size() / 2; i++)
{
Echange(t[i], t[t.size() - 1 - i]);
}
}
/*!
\brief Somme les elements du tableau
\param t Tableau.
*/
float Somme(const vector<float> &t)
{
float s = 0.0;
for (int i = 0; i < t.size(); i++)
{
s += t[i];
}
return s;
}
/*!
\brief Moyenne.
\param t Tableau.
*/
float Moyenne(const vector<float> &t)
{
return Somme(t) / t.size();
}
/*!
\brief Egalite.
\param a,b Tableaux.
*/
bool Identique(const vector<float> &a, vector<float> &b)
{
// Faux si les deux tableaux ont pas la meme taille
if (a.size() != b.size())
return false;
for (int i = 0; i < a.size(); i++)
{
if (a[i] != b[i])
{
return false;
}
}
return true;
}
/*!
\brief Tri.
\param t Tableau.
*/
void Tri(vector<float> &t)
{
for (int i = 0; i < t.size(); i++)
{
for (int j = i + 1; j < t.size(); j++)
{
if (t[i] > t[j])
{
Echange(t[i], t[j]);
}
}
}
}
/*!
\brief Calcul un nombre aleatoire entre deux valeurs
\param a,b Bornes.
*/
float Alea(float a, float b)
{
const int N = 648792;
float t = float(rand() % N) / float(N - 1);
return (1.0 - t) * a + t * b;
}
/*!
\brief Initialise un tableau avec des valeurs aléatoires.
\param t Tableau.
\param a,b Bornes.
\param n Nombre d'elements.
*/
void Alea(vector<float> t, float a, float b, int n)
{
t.resize(n);
for (int i = 0; i < n; i++)
{
t[i] = Alea(a, b);
}
}
/*!
\brief Teste si un tableau est trie.
\param t Tableau.
*/
bool EstTrie(const vector<float> t)
{
for (int i = 0; i < t.size() - 1; i++)
{
if (t[i] > t[i + 1])
return false;
}
return true;
}
int main()
{
// Initialisation directe du tableau
// Pour ne pas avoir a appeler la saisie
vector<float> u = {2, 5, 6};
// Affichage
// Get(u);
Show(u);
Reverse(u);
Show(u);
// Somme et moyenne
cout << "Somme = " << Somme(u) << endl;
cout << " Moy = " << Moyenne(u) << endl;
// Copie sur v
vector<float> v = u;
cout << Identique(u, v) << endl;
// Changement d'un element de v pour qu'il soit différent de u
v[0] *= 2.0;
cout << Identique(u, v) << endl;
// Remplissage aleatoire et tri
Alea(u, -500.0, 500.0, 10000000);
cout << "Le tableau est il trie ? " << EstTrie(u) << endl;
Tri(u);
cout << "Le tableau est il trie ? " << EstTrie(u) << endl;
return 0;
}