/*  En-tete du programme
  ====================
  Programme:  Formulaire
  Autheur:    Martin Robinson
  Conception: 20/01/2012
  But:    Prouver que Angelina Jolie
          se reproduit beaucoup trop

Modification : 20 fevrier 2012
               Martin Robinson
			   ajout de librairie
  Directives du preprocesseur
  ===========================*/

#include <iostream>
#include <limits>
#include <string>
#include <sstream>
#include "martinrobinson.hpp"

using namespace std;

const char * msgSaisieNom = "Entrer votre nom : ";
const char * msgSaisieSexe = "Entrer votre sexe (f/g) : ";
const char * msgSaisieNbEnfant = "Combien d'enfants avez-vous ? : ";
const char * msgSaisieNomEnfant = "Quel est le nom de votre enfant ";

/*  prototype de fonction
  ===================*/

int calculAllocation(int );

/*  Programme principal
  ===================*/
 
int main ()
{
  /*initialisation*/
  string nom;         //nom du parent
  char sexe;      //sexe du parent
  int nbEnfant;   //nombre denfant a charge
  string nomEnfant;   //nom des enfants
  
  /*valiation*/
  cout << "Formulaire d'inscription\n"
       << "========================\n";
  nom = saisirString(msgSaisieNom);		//20 fev mr
  sexe = saisirCharValide(msgSaisieSexe,"FG");
  do{
		nbEnfant = saisirInt(msgSaisieNbEnfant);		//20 fev mr
  }while(nbEnfant>20 || nbEnfant<0);
  
  viderCin();		//20 fev mr
  for(int i=0; i<nbEnfant; i++)
  {
    stringstream questionEnfant;
    questionEnfant << msgSaisieNomEnfant << i+1 << " ? : ";
    nomEnfant = saisirString(questionEnfant.str());		//20 fev mr
  }
  /*sortie*/
  //le premier enfant vaut 2166$
  //les 2-3 ieme enfants valent 1083$
  //les suivants valent 1623
  cout << nom << " votre montant d'allocation pour " << nbEnfant 
       << " enfant" << ((nbEnfant>1)?'s':' ') << " : " 
       //<< ((nbEnfant>0) ? ((nbEnfant-1)*1083)+2166 : 0) + ((nbEnfant>3) ? (nbEnfant-3)*540 : 0) 
	   << calculAllocation(nbEnfant)
       << "$\n";
  
  attendre();
  return 0;
}

/*  fonction
  ===================*/

int calculAllocation(int nbEnfant)
{
	return ((nbEnfant>0) ? ((nbEnfant-1)*1083)+2166 : 0) + ((nbEnfant>3) ? (nbEnfant-3)*540 : 0);
}