Probléme de calcul

Résolu
kamovb Messages postés 18 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 17 septembre 2014 - 4 juin 2008 à 19:01
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 6 juin 2008 à 00:48
 salut tous le monde
j'ai 2 variables réels
somme et tim
le probléme est:
- si somme=100 alors tim=0
-si somme  =500 alors tim=2.50
si somme >=1000 alors tim =3.25et ainsi de suite, chaque fois que la somme(1000)+500 le "tim" +1.25
aidez moi SVP!

12 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
4 juin 2008 à 19:17
Salut,

ben tu fais une boucle :

while somme > 500

tim = tim + 1.25
somme = somme - 500

wend
______________________________________
DarK Sidious
3
kamovb Messages postés 18 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 17 septembre 2014
4 juin 2008 à 19:29
 salut tous le monde
merci Bcp! darksidious
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
4 juin 2008 à 19:35
Bonjour,

Mais est-ce bien une boucle qui est le plus adapté. En effet, on pourrait aussi penser à la fonction modulo "MOD"...

Amicalement,
Us.
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
4 juin 2008 à 20:24
Salut,

Pas très clair l'explication... Mais si on traduit ton explication en code:

' si somme=100 alors tim=0
If Somme = 100 Then
    Tim = 0
' si somme  =500 alors tim=2.50
ElseIf Somme = 500 Then
    Tim = 2.5
' si somme >=1000 alors tim =3.25, chaque fois que la somme(1000)= +500 le "tim" = +1.25
ElseIf Somme >= 1000 Then
    Tim = Math.Floor(Somme / 500) * 1.25 + 0.75
End If

ça donne ceci:Somme 100> Tim = 0   : OKSomme 499> Tim = Rien   : ???Somme 500> Tim = 2.5   : OKSomme 501> Tim = Rien   : ???Somme 1000> Tim = 3.25   : OKSomme 1250> Tim = 3.25   : OK?Somme 1500> Tim = 4.5   : OK?Somme 2000> Tim = 5.75    : OK?

Mais alors que faire si Somme = 99, 101, 450, 499, 501, etc ???

<hr size="2" width="100%" />
Pourquoi avoir accepté la réponse de DARKSIDIOUS?

Son code génère ceci:
Somme 100> Tim = 0   : OKSomme 500> Tim = 0   : FauxSomme 1000> Tim = 1.25   : FauxSomme 1500> Tim = 2.5   : FauxSomme 2000> Tim = 3.75    : Faux

Je comprend vraiment rien aujourd'hui
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 juin 2008 à 20:36
Bonjour,

Moi, si je m'en tiens uniquement à la question, telle qu'elle est posée, j'aurais tendance à répondre :

tim = (somme \ 500) * 1.25

en faisant bien attention au \ qui n'est pas un /

J'ai mal lu ???
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
4 juin 2008 à 20:54
... et "" c'est la même chose que MOD, du reste...

Amicalement,
Us.
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
4 juin 2008 à 21:48
Moi, si je m'en tiens uniquement à la question, telle qu'elle est posée, j'aurais tendance à répondre :
tim = (somme \ 500) * 1.25



Oui à priori peut-être, mais kamovb a pris la peine de nous mettre des exemples:

si somme=100 alors tim=0
si somme  =500 alors tim=2.50
si somme >=1000 alors tim =3.25

Or tim = (somme \ 500) * 1.25 ne produit aucun de ces résultats

car:
si somme =100 alors tim= 0 * 1.25 = 0

si somme  =500 alors tim= 2 * 1.125 = 2.50

si somme >=1000 alors tim = 2.6 * 1.25 = 3.25

Comme je l'ai dis, "Pas très clair l'explication..."
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
4 juin 2008 à 21:49
"Or

tim = (somme \ 500) * 1.25 ne produit aucun de ces résultats"

Si en fait, le Somme = 100 est correct
Ca donne les même résultats que DARKSIDIOUS
0
kamovb Messages postés 18 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 17 septembre 2014
5 juin 2008 à 13:09
 merci a vous tous!
voila ce que j'ai fais:
if s>=500 then
text2.text="2.5"
elseif s<=500 then
text=2.text="0"
end if
while s>500
tim=tim+1.25
s=s-500
text2.text=tim
wend
est-ce que ça va ?!!!!!!!!
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
5 juin 2008 à 16:01
Ceci ne te donne pas les résultats que tu demande pour Somme>=1000...

Tu n'as pas lu mes messages?
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
5 juin 2008 à 23:15
Bonsoir,

Kevin.Ory a raison d'insister. Les valeurs ne suivent d'ailleurs pas une suite "logique". Quel est les vrais valeurs, ou plus précisément quelle logique doit suivre la suite... Il est clair qu'il faudrait programmer la relation (fonction math) par un calcul d'une formule, et non par une boucle...

Il serait bon d'apporter plus de précision sur ce point, pour aller plus loin, me semble-t-il.

Amicalement,
Us.
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
6 juin 2008 à 00:48
Merci Us

Les valeurs du début sont sans doute correct (a toi de voir kamovb, on en sais pas assez pour Somme<1000), mais pour Somme>=1000 la boucle est fausse, de plus beaucoup plus lente que ma solution:

Tim = Math.Floor(Somme / 500) * 1.25 + 0.75

A passage, les solutions données par Us (DivRem (Mod)) et par jmfmarques (\) fonctionne très bien aussi, ça donne la même chose...

En puis ton "text2.text=tim" il faut le mettre après la boucle, pas à l'intérieur.
0
Rejoignez-nous