<?php
 // Saisie des données initiales
 echo " =================================".PHP_EOL;
 echo " ====    Saisie des données   ====".PHP_EOL;
 echo " =================================".PHP_EOL;
 echo "Capital : "                  ;
 fscanf(STDIN,"%f",$Capital)        ;
 echo "Nombre d'années : "          ;
 fscanf(STDIN,"%d",$NbAn)           ;
 echo "et de mois      : "          ;
 fscanf(STDIN,"%d",$EtNbMois)       ;
 echo "Taux Annuel Hors Assurance (ex : 2.6) : " ;
 fscanf(STDIN,"%f",$TauxAnnuelHA)   ;
 printf("Taux de l'Assurance (0.29) : ")  ;
 fscanf(STDIN,"%f",$TauxAssurance)  ;
 // -------------------------------
 // --- on effectue les calculs ---
 // -------------------------------
 $NbMois       = ($NbAn*12)+$EtNbMois ;
 $AssMens      = round((($Capital*($TauxAssurance/100))/12),2);
 $TauxMensuel  = ($TauxAnnuelHA/100)/12                       ;
 // --- mensualité ---
 $calcul1      = $Capital*$TauxMensuel                     ;
 $calcul2      = pow((1+$TauxMensuel),$NbMois)             ;
 $calcul3      = $calcul2-1                                ;
 $MensualiteHA   = round(($calcul1*($calcul2/$calcul3)),2) ;
 $MensualiteAC   = $MensualiteHA+$AssMens                  ;
 $MensualiteInit = $MensualiteAC                           ;

 // --- Calcul du tableau d'amortissement ---
 $TotInterets=0      ;
 $TotAmortissement=0 ;
 $TotAssMens=0       ;
 $CapRestant=$Capital;
 
 // déclaration d'un tableau
 $Tab_Amort=array();
 
 for ($NumEcheance=1 ; $NumEcheance<=$NbMois ; $NumEcheance++)
 {
  $Interets=round($CapRestant*$TauxMensuel,2)    ;
  $Amortissement=$MensualiteHA-$Interets         ;
  $CapRestant=round($CapRestant-$Amortissement,2);
  // correction de la dernière échéance
  if (($NumEcheance==$NbMois) &&($CapRestant != 0))
  {
    $MensualiteAC+=$CapRestant ;
    $Amortissement+=$CapRestant;
    $CapRestant=0              ;
  }
  $TotMensualiteAC+=$MensualiteAC  ;
  $TotInterets+=$Interets          ;
  $TotAmortissement+=$Amortissement;
  $TotAssMens+=$AssMens            ;
  // -- autre syntaxe pour un tableau associatif à deux dimensions --
  // $Tab_Amort[$NumEcheance] = array("MensualiteAC" => $MensualiteAC, "Amortissement" => $Amortissement, "Interets" => $Interets, "CapRestant" => $CapRestant);
  $Tab_Amort[$NumEcheance]["MensualiteAC"]  = $MensualiteAC ;
  $Tab_Amort[$NumEcheance]["Amortissement"] = $Amortissement;
  $Tab_Amort[$NumEcheance]["Interets"]      = $Interets     ;
  $Tab_Amort[$NumEcheance]["CapRestant"]    = $CapRestant   ;
 }
 // --- coût du crédit ---
 $CoutCreditHA   = $TotInterets                            ;
 $PourcentCoutHA = round(($CoutCreditHA/$Capital)*100,2)   ;
 $CoutAss        = $TotAssMens                             ;
 $CoutCreditAC   = $CoutCreditHA+$CoutAss                  ;
 $PourcentCoutAC = round(($CoutCreditAC/$Capital)*100,2)   ;

 // Affichage des résultats
 echo " =================================".PHP_EOL;
 echo " ====    Synthèse du crédit   ====".PHP_EOL;
 echo " =================================".PHP_EOL;
 echo "Mensualité Assurance Comprise : ".$MensualiteInit.PHP_EOL;
 echo "Assurance par mois            : ".$AssMens.PHP_EOL;
 echo "Coût Total Assurance          : ".$CoutAss.PHP_EOL;
 echo "Coût Total du crédit Hors Ass en €  : ".$CoutCreditHA.PHP_EOL;
 echo "Coût Total du crédit Hors Ass en %  : ".$PourcentCoutHA.PHP_EOL;
 echo "Coût Total du crédit Ass Comp en €  : ".$CoutCreditAC.PHP_EOL;
 echo "Coût Total du crédit Ass Comp en %  : ".$PourcentCoutAC.PHP_EOL;
 echo " =================================".PHP_EOL;
 echo " ==== Tableau d'amortissement ====".PHP_EOL;
 echo " =================================".PHP_EOL;
 echo "N° Echéance\tMensualiteAC\tAmortissement\tIntérêts\tAssurance\tCapital Restant Dû".PHP_EOL;

 for ($NumEcheance=1 ; $NumEcheance<=$NbMois ; $NumEcheance++) 
 {
   $MensualiteAC  = $Tab_Amort[$NumEcheance]["MensualiteAC"]  ;
   $Amortissement = $Tab_Amort[$NumEcheance]["Amortissement"] ;
   $Interets      = $Tab_Amort[$NumEcheance]["Interets"]      ;
   $CapRestant    = $Tab_Amort[$NumEcheance]["CapRestant"]    ;
   printf("%8d\t%10.2f\t%10.2f\t%8.2f\t%8.2f\t%12.2f",$NumEcheance,$MensualiteAC,$Amortissement,$Interets,$AssMens,$CapRestant);
   echo PHP_EOL;
 }
 
 echo "-----------\t-----------\t-----------\t-----------\t-----------\t-------------".PHP_EOL;
 printf("%8s\t%10s\t%10.2f\t%8.2f\t%8.2f\t%12s","Total",$TotMensualiteAC,$TotAmortissement,$TotInterets,$TotAssMens,"");
 echo PHP_EOL;
?>

