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 10:52
Localisation : France
Contact :
Status : Hors ligne

Problème de calcul

#1

Message par Koumla » mar. 05 déc. 2017 11:49

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 : 11134
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème de calcul

#2

Message par Tlem » mar. 05 déc. 2017 21:17

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 10:52
Localisation : France
Contact :
Status : Hors ligne

Re: Problème de calcul

#3

Message par Koumla » mer. 06 déc. 2017 12:03

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 : 11134
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème de calcul

#4

Message par Tlem » mer. 06 déc. 2017 15:05

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é".

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 1944
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Problème de calcul

#5

Message par jchd » mer. 06 déc. 2017 19:16

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 10:52
Localisation : France
Contact :
Status : Hors ligne

Re: Problème de calcul

#6

Message par Koumla » jeu. 07 déc. 2017 11:09

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

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 1944
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Problème de calcul

#7

Message par jchd » jeu. 07 déc. 2017 13:28

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
Modérateur
Modérateur
Messages : 5655
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Problème de calcul

#8

Message par mikell » jeu. 07 déc. 2017 21:51

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 )

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 1944
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Problème de calcul

#9

Message par jchd » ven. 08 déc. 2017 03:16

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 10:52
Localisation : France
Contact :
Status : Hors ligne

Re: Problème de calcul  

#10

Message par Koumla » ven. 08 déc. 2017 11:35

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 : 11134
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème de calcul

#11

Message par Tlem » ven. 08 déc. 2017 17:06

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
Modérateur
Modérateur
Messages : 5655
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Problème de calcul

#12

Message par mikell » ven. 08 déc. 2017 22:01

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 : 11134
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: Problème de calcul

#13

Message par Tlem » ven. 08 déc. 2017 23:53

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

Qui est en ligne

Utilisateurs parcourant ce forum : Bing [Bot] et 2 invités