Problème calcule PHP "utiliser soustraction a la place division"

Résolu
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'au un devoir a faire "algorithme", mais j'ai des difficultés, par rapport calcule que je dois faire. Par exemple 10/3 je dois faire a la place de division je dois utiliser soustraction. Voici mon code PHP que je vous propose. (J'ai pas besoin que vous fassiez mon devoir a ma place, je besoin des explication, et solution).

1er solution
$nbr1 = 10;
$nbr2 = 3;

$result1 = $nbr1 - $nbr2;//10-3=7
$resultFinal = $nbr1 - $result1;//10-7=3
echo $resultFinal;//3

le résultat marche très bien, mais avec 10/4 ça marche plus.

2ème solution
$nbr1 = 10;
$nbr2 = 3;

if($nbr2 == 1 || $nbr2 == 3 || $nbr2 == 5 || $nbr2 == 7 || $nbr2 == 9 || $nbr2 == 11 || $nbr2 == 13 || $nbr2 == 15 || $nbr2 == 17 || $nbr2 == 19 || $nbr2 == 21){
$r1 = $nbr1 - $nbr2; //10-3=7
$r2 = $nbr1 - $r1; //10-7=3
}else{// pour la division 10/4
$r1 = $nbr1 - $nbr2; //10-4=6
$r2 = $r1 - $nbr2; //6-4=2
}

echo $r2;

la ça marche aussi très bien, mais $nbr2 == 1 || $nbr2 == 3 ||..... non pas bien a mon avis.


Qu'est ce que vous en pensez, a votre avis 2ème solution es'il bon ?

Merci et désoler pour les fautes d'orthographe.

2 réponses

hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Bonjour,

Quand vous dites que ça ne marche pas pour le couple (10,4), c'est parce que vous souhaitez obtenir le quotient de la division euclidienne de 10 par 4?? Que souhaitez-vous obtenir? le pgcd?

NB:
Il faut être clair, pour les autres, mais aussi pour soit, on s'en sort mieux en posant les choses : j'ai ça et je veux obtenir ça !

Cordialement,

hharchi9.
1
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, merci pour votre réponse. Désoler, je ne suis pas bien en math.
Je veux obtenir le quotient et le reste 10/3 en utilisant le soustraction. Le solution N°2 que je vous est montré marche bien a mon avis, sauf ça "$nbr2 == 1 || $nbr2 == 3 ||.....", que je n'aime pas.
Merci
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Pour tester simplement si un nombre est pair ou impair, il suffit d'utiliser la relation $nombre%2 qui retourne 1 si impair, 0 sinon.
0
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
SUPER, merci beaucoup, et une dernier question, comment on peut avoir le reste?

if($nbr2%2){
	$r1 = $nbr1 - $nbr2; //7
	$resultat = $nbr1 - $r1; //4
}else{
	$r1 = $nbr1 - $nbr2; //6
	$resultat = $r1 - $nbr2; //4
}


Merci encore
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Puisque tu as le quotient, il te suffit de faire
$nombre_depart1 - $quotient*$nombre_depart2)
0
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Non, ça marche pas, je essayé 100 / 8

le résultat au lieu de 12 ,5 il affiche 84.

if($nbr2%2){
	$r1 = $nbr1 - $nbr2; //7
	$resultat = $nbr1 - $r1; //4
}else{
	$r1 = $nbr1 - $nbr2; //6
	$resultat = $r1 - $nbr2; //4
}

echo $resultat;
0
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Je voulais faire cet exercice, mais impossible.
0
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
J'espère que je bien compris la question. :)
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Essaye avec une boucle while plutôt :)
0
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Je trouvé une solution pour le "reste", mais pour le quotient, je n'arrive pas le faire. Je essayé avec boucle, voici le code que je trouvé:

$nombre1 = 100;
$nombre2 = 8;

if(isset($nombre1) && isset($nombre2))
{
if($nombre1 >= $nombre2){
$nbr1 = $nombre1;//nbr1
$nbr2 = $nombre2;//nbr2
}
else{
$nbr1 = $nombre2;//nbr2
$nbr2 = $nombre1;//nbr1
}

$dividende = $nbr1; // le dividende est le premier nombre (nbr1/nbr2 = résultat entier +reste)
$diviseur = $nbr2; //le diviseur est donc le second nombre
$reste = $nbr1%$nbr2; //Opération de modulo pour obtenir le reste !

echo 'Dividende : '.$dividende.'<br/>';
echo 'Diviseur : '.$diviseur.'<br/>';
echo 'Reste : '.$reste;

echo '<br/>Le resultat : ';// j'narrive pas :)
}

Merci encore
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
J'ai écris une fonction si tu veux en guise de correction. Et en prime, on utilise pas de if ni de modulo (qui permet d'avoir directement le reste)
0
sebastien2016 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Si vous pouvez me donner une solution, ça sera super. Je beaucoup essayé, voici qu'est c'est que je trouvé sur le net :

Si on fait 8 / 2 :
1. 8 - 2 = 6
2. 6 - 2 = 4
3. 4 - 2 = 2
4. 2 - 2 = 0
0 < 2 donc on s'arrête là. 4 c'est le quotient, 0 c'est le reste


Si on fait 11 / 2 :
1. 11 - 2 = 9
2. 9 - 2 = 7
3. 7 - 2 = 5
4. 5 - 2 = 3
5. 3 - 2 = 1
1 < 2 donc on s'arrête. 5 c'est le quotient, 1 c'est le reste

Pense à ne pas compter l'itération de la boucle quand le reste est inférieur au diviseur.


Je dois apprendre mathématique aussi, :)

Merci encore
0