Grande Boucle & Structure
Publié : ven. 06/nov./2009 14:48
Bonjour à tous.
J'ai besoin d'utiliser une structure de grande dimension, pour calculer le nombre d'apparition de certaines valeurs.
Ma fourchette de valeurs se situe entre 1 et 400 000 000 000, pour une premiére ébauche.
( je réduirai sans doute de beaucoup par la suite).
Je définis une taille de structure de DIM 400 000 000 000.
Ensuite je remplis de maniére aléatoire la structure sans dépasser la capacité définie en Byte .b ,1 octet . (En pratique tous les emplacement de la structures ne sont pas tous utilisés, seulement un certains nombre de la fourchette entre 1 et 400 000 000 000).
Dans le petit exemple de code suivant, le remplissage aléatoire de la structure fonctionne, mais certains resultats du "debug" ne marchent pas.
Etonnant aussi le debug de la boucle for/next i qui donne = 568 041 473.
Alors qu'en fin de code tout semble indiquer que la boucle est bien parcourue jusqu'au bout !
Ou serait l'erreur dans le code ?
Voila, merci pour toute infos.
@+
J'ai besoin d'utiliser une structure de grande dimension, pour calculer le nombre d'apparition de certaines valeurs.
Ma fourchette de valeurs se situe entre 1 et 400 000 000 000, pour une premiére ébauche.
( je réduirai sans doute de beaucoup par la suite).
Je définis une taille de structure de DIM 400 000 000 000.
Ensuite je remplis de maniére aléatoire la structure sans dépasser la capacité définie en Byte .b ,1 octet . (En pratique tous les emplacement de la structures ne sont pas tous utilisés, seulement un certains nombre de la fourchette entre 1 et 400 000 000 000).
Dans le petit exemple de code suivant, le remplissage aléatoire de la structure fonctionne, mais certains resultats du "debug" ne marchent pas.
Etonnant aussi le debug de la boucle for/next i qui donne = 568 041 473.
Alors qu'en fin de code tout semble indiquer que la boucle est bien parcourue jusqu'au bout !
Code : Tout sélectionner
; Tres longue Boucle & Structure
; 400 000 000 000 //
max.q = 400000000000 ; Quad .q = maxi 9223372036854775807 // 9 223 372 036 854 775 807
;
Structure resultat
total.b ; Byte .b / 1 octet Maxi = 127
EndStructure
;
Dim calcul.resultat(max)
;
DisableDebugger
;
For i = 1 To 400000000000
calcul(i)\total = (Random(100-1))+1 ; Valeurs aleatoires entre 1 & 100
Next i
;calcul(max)\total = 123
EnableDebugger
;
Debug i ; Pourquoi = 568 041 473 ?
Debug "_________________________________"
;
Debug calcul(1)\total
Debug calcul(10)\total
Debug calcul(100)\total
Debug calcul(1000)\total
Debug calcul(10000)\total
Debug calcul(100000)\total
Debug calcul(1000000)\total
Debug calcul(10000000)\total
Debug calcul(100000000)\total
;===================================
;Debug calcul(1000000000)\total ; Erreur ?
;Debug calcul(10000000000)\total ; Erreur ?
;Debug calcul(100000000000)\total ; Erreur ?
; MAX = 400000000000
;===================================
;
Debug calcul(i-1)\total ; Fonctionne
Debug calcul(max)\total ; Fonctionne
Ou serait l'erreur dans le code ?
Voila, merci pour toute infos.
@+