IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction pour calcul de balance par utilisateurs


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Fonction pour calcul de balance par utilisateurs
    Bonjour à tous,

    Je suis en pleine réalisation d'un site qui est quasiment terminé, une derrière fonction doit être mis en place et malgré de nombreuses recherches, je sèche.

    Nous avons :

    Les dépenses totales d'un nombre de participant illimité :

    A = 10
    B = 40
    C = 30
    D = 80

    Grâce à ces données, nous pouvons calculer :

    A + B + C + D = 160

    Pour que les dépenses soit équilibrées, chaque personne devrait avoir dépensé :

    160 / 4 = 40

    Nous pouvons désormais définir la balance de chacun :

    A - 40 = - 30
    B - 40 = 0
    C - 40 = -10
    D - 40 = 40

    Désormais, le souci est de créer une fonction qui permet de définir qui doit quoi et à qui, sachant qu'il peut y avoir 4 comme 20 participants...

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    Tu n'as pas précisé d'ou venait tes informations mais voila ce que tu cherche en se basant sur un tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    $depense 		= array('A'=>10,'B'=>40,'C'=>30,'D'=>80);
    $doit			= array();
    $nbParticipants = count($depense);
    $somme 			= array_sum($depense);
    $equilibre	 	= $somme/$nbParticipants;
    foreach($depense as $key=>$value)
    {
    	$doit[$key] = $value - $equilibre;
    }
    var_dump($doit);
    ?>
    Résultat :
    array
      'A' => int -30
      'B' => int 0
      'C' => int -10
      'D' => int 40
    Reste simplement a peuplé le tableaux $depense avec autant d'utilisateur que nécessaire et récupérer les valeur dans le tableaux $doit

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse.

    Cependant jusque là, j'y suis.
    Après les comptes sont clos, donc il faut finir qui doit combien et à qui

    Dans ce cas :

    A doit 30 à D
    B ne doit rien
    C doit 10 à D
    D ne doit rien

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    La réponse est trouvée. Merci pour votre aide en tout cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    function equilibre($arr, &$mvt)
    {
    	$mvt = array();
    	$moy = array_sum($arr)/count($arr);
    	$crd = array();
    	foreach($arr as $u=>$s) if($s>$moy) $crd[] = array($u, $s-$moy);
    	foreach($arr as $u=>$s) if($s<$moy) 
    	{
    		$m = $moy-$s;
    		while($m!=0)
    		{
    			$c = array_splice($crd,0,1);
    			$e = min(array($c[0][1], $m));
    			$c[0][1] -= $e; $m -= $e;			
    			$mvt[] = array('to'=>$c[0][0],'from'=>$u,'value'=>$e);
    			if($c[0][1]>0) array_unshift ($crd, $c[0]);
    		}
    	}
    }
     
    header('content-type: text/plain');
    $dep = array('A'=>10,'B'=>40,'C'=>30,'D'=>80);
    equilibre($dep, $m);
    print_r($m);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 29/01/2015, 09h41
  2. Réponses: 6
    Dernier message: 12/01/2008, 19h21
  3. fonction pour calculer le temps de processus
    Par torNAdE dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 23/10/2006, 16h54
  4. [Math] Fonction pour calculer Factorielle(n)
    Par Asdorve dans le forum Vos contributions VB6
    Réponses: 2
    Dernier message: 10/08/2006, 22h20
  5. Réponses: 6
    Dernier message: 22/11/2005, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo