PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → DIVISION PAR 0  très urgent!!!!!
DIVISION PAR 0 très urgent!!!!!
Débuté par akermi.abderraouf, 04 déc. 2005 09:20 - 10 réponses
Posté le 04 décembre 2005 - 09:20
Salut.
J'utilise windev9 et je veux savoir comment effectuer une division et afficher son résultat sans faire apparaitre le message d'erreur "division par 0".
Je m'explique bien:
si A<>0 et B=0 alors A/B doit être égale à 0, ce qui est impossible.....
Merci infiniment.
Posté le 04 décembre 2005 - 09:55
Bonjour,
Je te conseille de créer une procédure "divise" définie par exemple comme :
divise(Numérateur,Dénominateur);

Il te suffit alors de mettre dans ta procédure un SI..ALORS...SINON
SI dénominateur=0 ALORS
renvoyer 0;
SINON
renvoyer numérateur/dénominateur;
FSI


Ce devrait marcher, et ainsi Windev est "capable" d'effectuer la division par zero
Tiens moi au courant par mail pour savoir si ca a marché
Posté le 04 décembre 2005 - 10:08
Si A<>0 et B=0 alors A/B doit être égal à l'infini et non égal à 0. (Impossible évidemment puisque la machine a des limites finies ...)
Il faut donc protéger toutes les divisions:
Si B<>0 Alors
..Info("Solution: ",A/B)
Sinon
..Erreur("Impossible")
Fin
Posté le 04 décembre 2005 - 10:22
Une méthode comme tant d'autres....

Si A <> 0 et B <> 0 alors
C = A/B
Fin
Si A <> 0 et B = 0 alors
C = 0
Fin

Il faudrait peut-être revoir les méthodes de programmation, non ?


Michel.
Posté le 04 décembre 2005 - 10:27
Bonjour,

Sur base de votre formule vous provoquez la division par 0 car B=0

Il faut donc
Si A <> 0 et B > 0 alors
C = A/B
FIN

ou plus simplement

Si B > 0 alors
C = A/B
FIN

Cordialement

Albert
Posté le 04 décembre 2005 - 10:29
Salut !

On 4-Dec-2005, "JUPITER" <akermi.abderraouf@hotmail.com> wrote:

Salut.
J'utilise windev9 et je veux savoir comment effectuer une division et
afficher son résultat sans faire apparaitre le message d'erreur "division
par 0".
Je m'explique bien:
si A<>0 et B=0 alors A/B doit être égale à 0, ce qui est impossible.....
Merci infiniment.



Ce que tu demandes est impossible ...
Une division par zéro devrait donner l'infini et pas zéro ...
Même si pour certains, l'infini et zéro se rejoignent quelque part, pour un
ordinateur, cette opération est impossible ...
Pour éviter cette erreur, il te suffit de tester la valeur du diviseur
AVANT ta division.
Pour revenir à ton calcul : (C = A/B)
si B = 0 alors
C = 0
sinon
C = A/B
fin

Une autre méthode apparue avec la version 9, plus concise , mais peut être
moins lisible
c = b=0 ? 0 sinon A/B
elle a l'avantage de pouvoir être utilisée dans une expression ...
Par exemple :
si on doit avoir C = (A/B)*10 et que l'on veuille que dans le cas où B=0 le
résultat soit 0, on pourra écrire :
C = (b=0 ? 0 sinon A/B)*10

Bien à toi ...

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Posté le 04 décembre 2005 - 10:49
Bonjour,

J'utilise windev9 et je veux savoir comment effectuer une division et
afficher son résultat sans faire apparaitre le message d'erreur "division
par 0".
Je m'explique bien:
si A<>0 et B=0 alors A/B doit être égale à 0, ce qui est impossible.....


L'explication est bonne mais fausse, dans ton cas A/B = infini et pas 0.
(Divise par un très petit nombre, par exemple 1e-30 pour t'en rendre compte)
Et il n'est pas possible de réaliser une divisin par 0 dans aucun langage.
Tu peux cependant intercepter l'erreur avec un QUAND EXCEPTION et mettre un
résultat de ton choix

> Merci infiniment.

"infiniment" c'est le cas de le dire.

De rien

Amitiés.

--
Francis MOREL
http://wdmlist.free.fr
Posté le 04 décembre 2005 - 11:22
Dans un message JUPITER disait :

Salut.
J'utilise windev9 et je veux savoir comment effectuer une division et
afficher son résultat sans faire apparaitre le message d'erreur
"division par 0". Je m'explique bien:
si A<>0 et B=0 alors A/B doit être égale à 0, ce qui est
impossible.....
Merci infiniment.



tu as tout dit ... tu dois tester, ou traiter les exceptions

A+
--
Michel HERRSCHER CONSULTANT
Président WINDASSO - Association des utilisateurs WxxDEV(c)
Tel : +33450870912 Fax:+33450871741
http://www.windasso.org
Posté le 04 décembre 2005 - 11:38
en vision macro algo :

procedure division( A, B) est un float
si B=0 alors
renvoyer 0
sinon
// si a= 0 alors le renvoyer = 0
renvoyer (A/B)
fin si


"JUPITER" <akermi.abderraouf@hotmail.com> a écrit dans le message de
news:4392a06b$1@news.pcsoft.fr...
Salut.
J'utilise windev9 et je veux savoir comment effectuer une division et

afficher son résultat sans faire apparaitre le message d'erreur "division
par 0".
Je m'explique bien:
si A<>0 et B=0 alors A/B doit être égale à 0, ce qui est impossible.....
Merci infiniment.

Posté le 04 décembre 2005 - 12:18
"JUPITER" <akermi.abderraouf@hotmail.com> a écrit dans le message de news:
4392a06b$1@news.pcsoft.fr...
Salut.
J'utilise windev9 et je veux savoir comment effectuer une division et

afficher son résultat sans faire apparaitre le message d'erreur "division
par 0".
Je m'explique bien:
si A<>0 et B=0 alors A/B doit être égale à 0, ce qui est impossible.....
Merci infiniment.



Si B=0 je n'effectue pas la division
@+
Posté le 04 décembre 2005 - 22:55
Le 4 décembre 2005 à 10:29, dans <news:4392b18c$1@news.pcsoft.fr>,
Marcel.berman@managingbusiness.be nous disait :

> Une division par zéro devrait donner l'infini et pas zéro ...

Voilà la troisième réponse reprenant cette erreur. Une division par zéro
n'existe pas, c'est une opération interdite en mathématiques ! C'est la
division par un nombre PROCHE de zéro qui TEND vers l'infini. Pour être
encore plus précis, on peut ajouter que selon le signe de ce nombre
proche de zéro, le résultat tendra vers + ou - l'infini, ce qui change
tout.

--
Eric