Problème de calcul

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Koumla
Niveau 4
Niveau 4
Messages : 68
Enregistré le : jeu. 15 avr. 2010 11:52
Localisation : France
Status : Hors ligne

Problème de calcul

#1

Message par Koumla »

Bonjour à tous.

J’ai un souci de résultat dans un calcul et je ne comprends pas pourquoi !

J’ai toujours le même résultat pour la ligne 95 quand je rajoute « * $saut_angle »

Normalement celui-ci devrait varier ?

Bien à vous

Koumla

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
#include <ProgressConstants.au3>
#include <SliderConstants.au3>
#include <GuiSlider.au3>
#include "GIFAnimation.au3"
;------------------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------------------
#Region ### START Koda GUI section ### Form=C:\Dropbox\Ale\Form1.kxf
$Form1 = GUICreate("Form1", @DesktopWidth , @DesktopHeight, 0, 0)
GUISetCursor (0)
GUISetBkColor(0x008080)

GUISetState(@SW_SHOWMAXIMIZED)
;------------------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------------------
Global $couleur_americain = 0x0043FF
Global $couleur_japonais = 0xFFD800
Global $couleur_ideal = 0x4CFF00

Global $ecran_hauteur = @DesktopHeight
Global $ecran_lageur = @DesktopWidth

; taille du graphique
Global $hauteur = @DesktopHeight
Global $Largeur = @DesktopWidth
;--------------------------------------------------
Global $population_mondiale = 7.5E+9

Global $population_americain = 7.5E+9
Global $population_japonais = 7.5E+9
Global $population_ideal = 7.5E+9

Global $natalite_americain = 1.84
Global $natalite_japonais = 1.46
Global $natalite_ideal = 2.01
;--------------------------------------------------
Global $nourriture_consommation_annuelle_americain = 3.41E+8
Global $nourriture_gaspillage_annuelle_americain = 1.3E+12

Global $nourriture_consommation_annuelle_japonais = 6.09E+6
Global $nourriture_gaspillage_annuelle_japonais = 1.3E+12

Global $nourriture_consommation_annuelle_ideal = 3.11E+7
Global $nourriture_gaspillage_annuelle_ideal = 0
;--------------------------------------------------

GUICtrlCreateGraphic(0, 0, @DesktopWidth, @DesktopHeight, 0) ; gauche top largeur hauteur

GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFFFF)

$pos_x = 200
$pox_y = 200
$rayon = 100

camenbert_2()

;GUISetState(@SW_SHOW)
;------------------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------------------
While 1

	$nMsg = GUIGetMsg()

		Switch $nMsg

				Case $GUI_EVENT_CLOSE

				Exit

		EndSwitch

WEnd
;------------------------------------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------------------------------------
Func camenbert_2()

for $x = 1 to 10

ConsoleWrite("--------------------------------------------------" & @CRLF)
ConsoleWrite("tour : " & $x & @CRLF)
ConsoleWrite("--------------------------------------------------" & @CRLF)

;--------------------------------------------------
$total_conso = ($population_mondiale * ($natalite_americain * $x)) + ($population_mondiale * ($natalite_japonais * $x)) + ($population_mondiale * ($natalite_ideal * $x))
ConsoleWrite("total_conso : " & $total_conso & @CRLF)

$saut_angle = 360 / $total_conso
ConsoleWrite("saut_angle : " & $saut_angle & @CRLF)

Global $am = ($population_mondiale * ($natalite_americain * $x)) * $saut_angle
ConsoleWrite("am : " & $am & @CRLF)

Global $aj = ($population_mondiale * ($natalite_japonais * $x))
ConsoleWrite("aj : " & $aj & @CRLF)

Global $ai = ($population_mondiale * ($natalite_ideal * $x))
ConsoleWrite("ai : " & $ai & @CRLF)
;--------------------------------------------------
GUISetState(@SW_HIDE)

GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFFFF)

; americain
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $couleur_americain, $couleur_americain)
GUICtrlSetGraphic(-1, $GUI_GR_PIE, $pos_x, $pox_y, $rayon, 90, int($am)) ; x / y / rayon / position angle de depart / taille de l'angle

; japonais
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $couleur_japonais, $couleur_japonais)
GUICtrlSetGraphic(-1, $GUI_GR_PIE, $pos_x, $pox_y, $rayon, 90 + int($am), int($aj)) ; x / y / rayon / position angle de depart / taille de l'angle

; calcul pour finir correctement le camenbert
Global $angle_manquant = 360 - (int($am) + int($aj) + int($ai))
$ai = $ai + $angle_manquant

; ideal
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $couleur_ideal, $couleur_ideal)
GUICtrlSetGraphic(-1, $GUI_GR_PIE, $pos_x, $pox_y, $rayon, 90 + int($am) + int($aj), int($ai)) ; x / y / rayon / position angle de depart / taille de l'angle

GUISetState(@SW_SHOW)

sleep (100)

Next

EndFunc
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème de calcul

#2

Message par Tlem »

Bonsoir.
êtes vous sur d'utiliser des nombres. ^^
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Koumla
Niveau 4
Niveau 4
Messages : 68
Enregistré le : jeu. 15 avr. 2010 11:52
Localisation : France
Status : Hors ligne

Re: Problème de calcul

#3

Message par Koumla »

Bonjour, Thierry

J’ai retourné le problème dans tous les sens depuis plus d’une heure ce matin, et hier soir après lecture de votre message, et je sens le mal de tête qui arrive.

Je sèche sur place.

Koumla
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème de calcul

#4

Message par Tlem »

Autant pour moi, j'ai cru que vous récupériez des informations par GUI ...

Concernant votre problème, il semble que ce soit la valeur $saut_angle qui provoque le problème ...
9.03954802259887e-009 est un double alors que les autres nombres sont convertit en entier 32bits ...

Autre remarque, le fait de déclarer des variables en global dans une boucle qui est elle même dans une fonction, ça ne ce fait pas !!!
Déclarez d'abord vos variables en dehors de la fonction ou si elles doivent être réinitialisées, déclarez les en local au début de la fonction (mais dans ce cas pas de déclaration globale).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Problème de calcul

#5

Message par jchd »

Bonsoir,

Revoyez vos formules, car $x est en numérateur _et_ en dénominateur de la valeur calculée ; celle-ci ne varie donc pas.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Koumla
Niveau 4
Niveau 4
Messages : 68
Enregistré le : jeu. 15 avr. 2010 11:52
Localisation : France
Status : Hors ligne

Re: Problème de calcul

#6

Message par Koumla »

Merci, pour votre aide.

2 tubes d’aspirine après, je en trouve pas.

Ma fille et son amie, vont se passé du programme pour leur exposé scolaire, se sera moins fun pour eux.

Koumla
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Problème de calcul

#7

Message par jchd »

Je reprends votre bout de code :

Code : Tout sélectionner

		$total_conso = ($population_mondiale * ($natalite_americain * $x)) + ($population_mondiale * ($natalite_japonais * $x)) + ($population_mondiale * ($natalite_ideal * $x))
		ConsoleWrite("total_conso : " & $total_conso & @CRLF)

		$saut_angle = 360 / $total_conso
		ConsoleWrite("saut_angle : " & $saut_angle & @CRLF)

		Global $am = ($population_mondiale * ($natalite_americain * $x)) * $saut_angle
Vous faites donc, en mettant les facteurs commun en forme :

$total_conso = $population_mondiale * $x * ($natalite_americain + $natalite_japonais + $natalite_ideal)
$saut_angle = 360 / $total_conso
$am = ($population_mondiale * ($natalite_americain * $x)) * $saut_angle

soit :

$am = $population_mondiale * $natalite_americain * $x * 360 / $total_conso

soit encore :

$am = $population_mondiale * $x * $natalite_americain * 360 / ($population_mondiale * $x * ($natalite_americain + $natalite_japonais + $natalite_ideal))

Après simplification, car $population_mondiale * $x est un facteur figurant à la fois au numérateur et au dénominateur :

$am = $natalite_americain * 360 / ($natalite_americain + $natalite_japonais + $natalite_ideal)

Cette valeur est constante tout au long de la boucle For car elle ne dépend pas de $x.
Pas besoin d'acide pour ça, surtout que deux tubes pourraient se révéler une dose dangereuse :shock:
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Problème de calcul

#8

Message par mikell »

jchd a écrit : jeu. 07 déc. 2017 13:28 Pas besoin d'acide pour ça
parce que c'est basique ... :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Problème de calcul

#9

Message par jchd »

Du coup ça ne manque pas de sel !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Koumla
Niveau 4
Niveau 4
Messages : 68
Enregistré le : jeu. 15 avr. 2010 11:52
Localisation : France
Status : Hors ligne

Re: Problème de calcul  

#10

Message par Koumla »

Merci les gars pour votre aide.

Je viens enfin de comprendre.

Pour moi les math c’est 1+1=11.

Merci encore.

Koumla
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème de calcul

#11

Message par Tlem »

Huummm, là effectivement il faut arrêter l'acide.

Vous auriez dit 1 et 1 font 11,ca passe (bien que pour un matheu ça passe pas). Mais 1+1=11 aie, aie, aie.

Envoyé de mon appareil mobile en utilisant Tapatalk

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Problème de calcul

#12

Message par mikell »

et pour un matheu le $x c'est important, finalement ...
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème de calcul

#13

Message par Tlem »

Effectivement. Le correcteur l'avait proposé et je ne sais pas pourquoi, j'ai trouvé que ça ne faisait pas très Jojo, du coup je l'ai oublié.
Après c'est moins pire que 1+1=11 ^^

Envoyé de mon appareil mobile en utilisant Tapatalk

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre