2009-09-04 11 views
-4

J'ai un code où, si un utilisateur a référé X nombre de personnes, il aura X nombre de crédits.Aide pour les problèmes mathématiques

Par exemple, référence 2 personnes = 1 crédit. 4 personnes = 2 crédits, et ainsi de suite.

Cependant, lorsque cela devient délicat est, les chiffres peuvent être modifiés de sorte qu'il obtient 1 crédit par personne ou 1 crédit par 3 personnes, 1 crédit pour 5 personnes, etc.

S'il obtient 1 crédits pour 3 les gens, et il a référé 5 personnes, alors je voudrais qu'il reçoive 1 crédit, et qu'il soit stocké qu'il a encore 2 personnes pour lesquelles il n'a pas eu de crédits. Donc, la prochaine fois qu'il réfère quelqu'un, c'est 2 + 1 = 3, et il obtient un crédit.

Ma question est,

Étant donné X = Nombre de personnes dont il a besoin de se référer pour 1 crédit, et Y = Nombre de personnes par un utilisateur refered,

(SOx pourrait être 3, comme en 3 personnes par crédit, et Y peut être 6, auquel cas il devrait obtenir 2 crédits)

1) Qu'est-ce qu'une formule ou fonction simple qui va X et Y, et retourne le nombre de crédits qui devraient être donnés à cette personne, et

2) Qui donnera également un reste pour les crédits qui ne peuvent pas encore être attribués. Par exemple si X est 3 et Y est 5, les crédits seraient 1, et le reste serait 2, ainsi avec le référenceur suivant Y deviendra 3 encore et l'utilisateur obtiendrait 1 crédit?

+0

Est-ce que X peut changer avec le temps? – Bombe

+1

relisez votre question, et éditez pour corriger les incohérences .. Dans le 4ème paragraphe, s'il obtient 3 crédits par personne, alors s'il référence cinq personnes il devrait obtenir 15 crédits pas un crédit. Vouliez-vous dire 1 crédit pour 3 personnes? - –

+0

wtf? pourquoi tant de downvotes –

Répondre

8
1.) 
creditsToPayout = Y/X; //use integer division to truncate, or floor result 
remainderReferrals = Y % X; //remainder of Y/X, leftover referrals 
0

Nombre de crédits = FLOOR (Y/X)

= Y- Remainder (X * SOL (Y/X))

1

Vous avez besoin division entière et le module. Pour PHP voir here pour:

- intval($a/$b) 
- $a % $b 
1

Si le nombre peut changer au fil du temps, ce qui se passe si, par exemple, il est intially 3 personnes par crédit. Il réfère 7 personnes et obtient 2 crédits avec 1 personne restante. Ensuite, la règle est modifiée à 4 personnes par crédit. En vertu de cette règle, il obtiendrait seulement 1 crédit avec 3 personnes restantes. Recueillez-vous un crédit? Je suppose que non, que la nouvelle règle ne s'applique qu'aux nouveaux crédits. Je pense donc que vous devez conserver votre base de données ou quoi que ce soit d'autre, le nombre de crédits reçus et le nombre de renvois qui n'ont pas été suffisants pour faire crédit. Le nombre de renvois non crédités augmenterait et diminuerait au fil du temps, car il ferait de nouveaux renvois et serait «échangé» contre des crédits. Franchement, je pense que ce serait plus simple si vous pouviez faire la règle X crédits par référence plutôt que X références par crédit, et ensuite augmenter le coût de tout ce que vous achetez avec les crédits. Comme, si la règle est 1 crédit pour 5 références, et quand vous obtenez 10 crédits, vous obtenez un iPod gratuit ou autre, alors vous avez besoin de 50 références pour obtenir un iPod. Alors changez-le à 1 crédit par référence et il faut 50 crédits pour obtenir un iPod. Alors vous n'auriez jamais à faire face aux fractions. Mais peut-être ne faites-vous pas les règles et tout cela n'est pas pertinent.

Questions connexes