Aller au contenu

Sujets conseillés

Posté

la fonction consiste a calculer le solde comme suit

en 2001 la reste du solde congé agent est 5 jours

en 2002 la reste du solde congé agent est 10 jours

en 2003 la reste du solde congé agent est 26 jours

exemple 1

si l'agent demande un congé de 20 jours

2001--> reste 0 jours

2002 ---> reste 0 jours

2003 -->reste 21 jours

exemple 2

si l'agent demande un congé de 5 jours

2001--> reste 0 jours

2002 ---> reste 10 jours

2003 -->reste 26 jours

on suppose $a=2001 ,$b=2002 , $c= 2003

jer veut connaitre pour $n jours demander que reste congé dans ($a,$b,$c)

Posté

Un début de réponse, à toi de traduire en php ...

fonction Calcul_Solde(année,n){

Si (solde_année - n < 0) alors

n = n - solde_année;

solde_année = 0;

Calcul_Solde(année+1,n)

Sinon

solde_année = solde_année - n;

n = 0;

FinSi

}

n est ton nombre de jour

année est l'année et solde_année correspond au solde de l'année année

Des contrôles sont sûrement à ajouter :

n > 0

somme des soldes < n

Posté

C'est rigolo comme fonction... et pas vraiment compliqué quand on utilise des array...

<?php
$solde_conge = array ( 2001=>5, 2002=>10, 2003=>26 );
$jours=20;

foreach($solde_conge as $key=>$value) {
  if($jours >= $value) {
     $jours-=$value;
     $value=0;
  }
  else {
     $value=$value-$jours;
     $jours=0;
  }
  $solde_conge[$key] = $value;
}
print_r($solde_conge);
?>

Ou en fonction:

<?php
function conges ($a,$b,$c,$d) {
$solde_conge = array ( 2001=>$a, 2002=>$b, 2003=>$c );
$jours=$d;

  foreach($solde_conge as $key=>$value) {
     if($jours >= $value) {
        $jours-=$value;
        $value=0;
     }
     else {
        $value=$value-$jours;
        $jours=0;
     }
     $solde_conge[$key] = $value;
  }
  return($solde_conge);
}

$jours=conges(5,10,26,20);
print_r($jours);

?>

Posté

Bonjour,

Soit $T_conges[annee] le tableau des congés par année.

$demande le nombre de jours demandés.

$reste_demande = $demande;
$annee_de_depart = 2001; // ARBITRAIRE

$annee_en_cours = $annee_de_depart;
while ($reste_demande > 0) {

// Si il y en a plus (ou autant) que la demande
if ($T_conges[$annee_en_cours] >= $reste_demande) {

  $T_conges[$annee_en_cours] -= $reste_demande;
}
// Sinon on "vide" l'année en cours
else {

 $reste_demande -= $T_conges[$annee_en_cours];
 $T_conges[$annee_en_cours] = 0;

}
 // Passer à l'année suivante
 $annee_en_cours ++;
}

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...