2010-10-13 6 views
1

Comment écrire une fonction pour implémenter un algorithme de division entière sans en utilisant l'opérateur de division. Les valeurs à virgule flottante et les résidus peuvent être mis au rebut . Les conditions d'erreur peuvent être ignorées.comment écrire une fonction pour implémenter un algorithme de division entière sans utiliser l'opérateur de division dans php

Par exemple:

f(10, 3) is 3 

f(10, 5) is 2 

f(55, 5) is 11 
+8

Aucune infraction, mais il semble que pas mal de questions dans votre histoire récente semblent comme des questions de devoirs à peine voilées, sans tentative préalable de solution. Si c'est le cas, nous sommes là pour vous aider, mais nous ne sommes pas ici pour faire vos devoirs entièrement pour vous. Cela nous trompe potentiellement, vos camarades de classe et, plus important encore, vous-même. S'il vous plaît jeter un oeil à http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions - plus important encore, montrer un effort initial de votre part, puis venez ici avec un spécifique question quant à une pièce particulière, vous êtes coincé. –

Répondre

4

Ma mise en œuvre, mais il ne prend pas en compte les symptômes des opérandes

function f($value, $div) 
{ 
     $result = 0; 
     while ($value >= $div) { 
       $result++; 
       $value -= $div; 
     } 

     return $result; 
} 

var_dump(f(10,3)); 
0

Je pense que vous devrez regarder les opérateurs au niveau du bit $ x> > $ y décale un bit vers la droite (multiplie par deux) en face de $ x < < $ y qui décale d'un bit vers la gauche, divisant par deux.

5
function div($a,$b) 
{ 
    $a -= $a % $b; 
    for($i = 0; $a != 0; $i++) 
    $a -= $b; 
    return $i; 
} 

Bien sûr, cela ne fonctionne que pour les nombres positifs

3

PHP a déjà une fonction pour que, avec bcdiv

echo bcdiv(10, 3, 0); // 3 
Questions connexes