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

Résolu/Fermé
sebastien2016 Messages postés 19 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015 - 23 juin 2015 à 12:00
sebastien2016 Messages postés 19 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015 - 25 juin 2015 à 15:35
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 mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
23 juin 2015 à 13:39
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 jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015
Modifié par sebastien2016 le 23/06/2015 à 14:34
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 mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
23 juin 2015 à 15:06
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 jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015
23 juin 2015 à 15:32
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 mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
Modifié par hharchi9 le 23/06/2015 à 15:36
Puisque tu as le quotient, il te suffit de faire
$nombre_depart1 - $quotient*$nombre_depart2)
0
sebastien2016 Messages postés 19 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015
23 juin 2015 à 15:37
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 jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015
Modifié par sebastien2016 le 23/06/2015 à 15:57
Je voulais faire cet exercice, mais impossible.
0
sebastien2016 Messages postés 19 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015
23 juin 2015 à 15:58
J'espère que je bien compris la question. :)
0
hharchi9 Messages postés 567 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
23 juin 2015 à 16:01
Essaye avec une boucle while plutôt :)
0
sebastien2016 Messages postés 19 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015
23 juin 2015 à 16:37
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 mercredi 18 décembre 2013 Statut Membre Dernière intervention 1 juillet 2015 24
23 juin 2015 à 18:09
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 jeudi 18 juin 2015 Statut Membre Dernière intervention 1 juillet 2015
24 juin 2015 à 16:00
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