// table_francs_euros.cpp -- coding: utf-8
#include <iostream>   // Utilisation des flux cin, cout et cerr.
#include <iomanip>    // Pour setw(...) dans les opérations de sorties.


using namespace std ; // Importer l'espace des noms de la bibliothèque standard.

// Définition d'une variable constante de type double.
const double VALEUR_EURO_EN_FRANCS = 6.55957 ;

// Déclaration des fonctions éventuellement utilisées par la suite.
double franc2euro(const double & somme_en_francs) ;
double euro2franc(const double & somme_en_euros) ;
void tirets(size_t nombre) ;

int main() { // Point d'entrée du programme.

	const double tableau[] = { .1, .5, 1, 5, 10, 50, 100, } ;
	const size_t nombre = sizeof(tableau) / sizeof(tableau[0]) ;

	const size_t nombre_tirets = 2+6+3+10+2 ;
	tirets(nombre_tirets) ;
	cout << "| " << setw(6) << "Francs" << " | " << setw(10) <<
	   "Euros" << " |\n" ;
	tirets(nombre_tirets) ;
	for ( size_t i = 0 ; i < nombre ; ++ i ) {
		cout << "| " << setw(6) << tableau[i] << " | " << setw(10) <<
		   franc2euro(tableau[i]) << " |\n" ;
	}
	tirets(nombre_tirets) ;
	return 0 ; // Le code de retour du programme est égal à 0.
}
// Cette fonction calcule la contrevaleur en euros d'une somme exprimée en francs.
double franc2euro(const double & arg) {
	return arg / VALEUR_EURO_EN_FRANCS ;
}
// Cette fonction insère une ligne de n caractères '-' sur le flux de sortie cout.
void tirets(size_t n) {
	while ( n -- > 0 )
		cout << '-' ;
	cout << endl ;
}
