/*
Outils de base pour faire du calcul vectoriel et matriciel
*/
#ifndef OUTILS_H
#define OUTILS_H
#include <vector>
using namespace std;
// Des synonymes pour nous faciliter l'écriture
typedef vector<int> VECTEUR;
typedef vector <vector<int> > MATRICE;
// Pour la saisie interactive d'un vecteur.
// L'utilisateur est invité à saisir le nombre de composantes voulues ainsi
// que les valeurs de ces composantes
void lireVecteur (VECTEUR & v);
// Affiche un vecteur sous la forme: [valeur_1,valeur_2,...,valeur_n]
void afficherVecteur (const VECTEUR & v);
// Addition de 2 vecteurs
// La fonction renvoie true en valeur de retour si l'opération a pu être faite et
// false sinon
bool additionVecteurs (const VECTEUR & v1, const VECTEUR & v2, VECTEUR & v);
// Multiplication d'un vecteur par un scalaire
void multiplicationVecteurParScalaire (int n, VECTEUR & v);
// Multiplication d'un vecteur par un scalaire
VECTEUR multiplicationVecteurParScalaire (int n, const VECTEUR & v);
// Pour la saisie interactive d'une matrice
// L'utilisateur est invité à saisir le nombre de lignes et de colonnes voulues
// ainsi que les valeurs de diverses composantes de la matrice
void lireMatrice (MATRICE & m);
// Affiche une matrice sous la forme: [m00,m01,m02,...m0n ; m10,m11,...]
// (les éléments d'une même ligne sont séparés par des virgules alors que
// les différentes lignes sont séparées par un point-virgule.
// Exemple: [1,2,3 ; 4,5,6] <<< A noter les espaces blancs avant et après le ;
void afficherMatrice (const MATRICE &);
// Addition de 2 matrices
// La fonction renvoie true en valeur de retour si l'opération a pu être faite et
// false sinon
bool additionMatrices (const MATRICE & m1, const MATRICE & m2, MATRICE & m);
// Produit de 2 matrices
// La fonction renvoie true en valeur de retour si l'opération a pu être faite et
// false sinon
bool produitMatrices (const MATRICE & m1, const MATRICE & m2, MATRICE & m);
// Transposée d'une matrice
MATRICE transposeeMatrice (const MATRICE & m);
#endif