PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Demande de L'aide Merci
Demande de L'aide Merci
Débuté par issam.belkaid, 30 nov. 2005 17:46 - 3 réponses
Posté le 30 novembre 2005 - 17:46
voila mon problème:
j'ai une table ou j'ai que 3 attributs Id, Valeur, test
id: identifiant auto.
valeur: soit 1 OU 2 OU 3.
test c'est à remplir.
travail demandé:
_mettre dans "test"=0 quand "valeur"=1 ou 3 (c'est evident)
_quand j'ai la valeur 2 il faut voir combien j'ai d'enregistrements et d'affecter pour 40% de ces enrg le test=1 et le RESTE (60%) test=0
Ca c'est deja fait mais il faut le faire d'une maniere aléatoire càd choisir au hasard les enreg ou je vais mettre mes valeurs en respectant les pourcentages.
Merci d'avance pour votre aide
Posté le 01 décembre 2005 - 11:13
Je t'aiderai avec plaisir, mais je n'ai rien compris à ta demande...

Désolé...

--
Cordialement,

GRIECO Anthony
SGTP Laclau
agrieco@laclau.fr


"belkaid" <issam.belkaid@gmail.com> a écrit dans le message de news:
438dd0ea$1@news.pcsoft.fr...

voila mon problème:
j'ai une table ou j'ai que 3 attributs Id, Valeur, test
id: identifiant auto.
valeur: soit 1 OU 2 OU 3.
test c'est à remplir.
travail demandé:
_mettre dans "test"=0 quand "valeur"=1 ou 3 (c'est evident)
_quand j'ai la valeur 2 il faut voir combien j'ai d'enregistrements et
d'affecter pour 40% de ces enrg le test=1 et le RESTE (60%) test=0
Ca c'est deja fait mais il faut le faire d'une maniere aléatoire càd
choisir au hasard les enreg ou je vais mettre mes valeurs en respectant
les pourcentages.
Merci d'avance pour votre aide



Posté le 01 décembre 2005 - 11:34
je vais essayer d'expliquer d'une autre manière.
- j'ai une table de 3 champs ("identifiant", "valeur"= soit 1, 2 ou 3, "test")
- je veux chercher dans le champs "valeur" la valeur 2
ET mettre dans le champs "test" pour 40% des valeurs 2 que j'ai trouvé la valeur "1" et le reste càd 60% je dois mettre dans le champs "test" la valeur 0.

et ceci doit etre d'une maniere aléatoire. càd quand je choisis mes valeurs 2
l'exemple qui suit j'ai 10 fois VALEUR = 2
donc pour 4 valeurs je vais mettre Test=1 et pour 6 valeurs Test=0
je vais
ID valeur test
1 1 X
2 2 1
3 3 X
4 1 X
5 2 0
6 3 X
7 2 0
8 3 X
9 1 X
10 2 1
11 3 X
12 3 X
13 1 X
14 3 X
15 2 0
16 2 1
17 2 0
18 2 0
19 2 1
20 2 0

VOILA mon prog que j'utilise pour le moment si vous m'aider à l'ameliorer je serais reconnaissant. merci d'avance et j'espere que j'etais clair cette fois ci.

//calculer le nombre d'enregistrements ou on a valeur = 2
HLitPremier ( fonc_test,ID)
TANTQUE PAS HEnDehors
SI fonc_test.VALEUR = 2 ALORS
i++

FIN
HLitSuivant ( fonc_test ,ID)
FIN

j=Arrondi(i*0.4,0)

TANTQUE l<j+1
InitHasard()
HLitRecherche(fonc_test,ID,Hasard(1,20))
SI fonc_test.VALEUR = 2 ALORS
fonc_test.TEST = 1
l++
HModifie(fonc_test)
HLitSuivant (fonc_test ,ID)

FIN

FIN
Posté le 02 décembre 2005 - 10:44
Bonjour,

Si j'ai bien compris le problème, personnelement je travaillerais comme ça.
Je ponds ça un peu tel quel, sans y avoir passé des heures...sorry s'il y a des lacune

1/Juste pour une question d'optimisation, j'effectuerai la première opération de rechrche avec une requête : soit dans l'éditeur de requête soit manuellement :

req_txt est chaine = "Select ID from fonctest WHERE ID=2"
marequete est data source

hexecutereqetesql(marequete,marequête)

//On calcule le nombre de 1 et de 0 qui'l y aura au total
nb_40 is int = int(hnbrec(marequete) / 40 *100) //nb rec correspondants à 40%
nb_60 is int = hnbrec(marequete) - nb_40

//On construit 2 tableau qui contiendront les ID
tab_40 est un tableau de nb_40 entiers
tab_60 est un tableau de nb_60 entiers

hlitpremier(marequete)
tanque que pas hendehors()
i++
if i <= nb_40 then
tab_40[i] = marequete.ID
else
tab_60[i-nb_40] = marequete.ID
end


//Je parcours chacun de ces tableau aléatoirement jusqu'à ce tous les ID
//contenus ont été utilisés :

i=0
boucle

si i = nb_40 alors //i est incrémenté chaque fois que l'on a mis un ID à jour
break //si il est égal à nb_40 ca veut dire qu'on les a tous fait !
fin

ind = [Hasard(1,nb_40)]
si <> tab_40[ind] <> 0 alors
hlitrecherche(fonc_test,ID,tab_40[ind])
si htrouve() alors
fonc_test.test = 1
fin
tab_40[ind] = 0
i++
fin
fin


même chose pour le tableau tab_60....

Tiens nous au courant si cela marche ou pas (j'ai peut-être fait une erreu qq part ?)

Ou contacte moi en privé si tu exploiter cette piste un peu mieux...

Fred
fred-76-nospam@hotmail.com (enlevé le '-no-spam)