Procedure pour tableau vide

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Procedure pour tableau vide

Message par venom »

Bonsoir,

j’étais entrain d’écrire un petit code qui me permet de savoir si "un tableau a de la place libre". j'entend par la si il y a encore des 0 dedans.

J'ai donc voulu me faire une petite procédure qui test ça, forcement ça ne va pas comme je le souhaite :roll:

Voici un petit code simple pour comprendre :

Code : Tout sélectionner

; création d'un tableau de 4 cases "vides" (les 4 cases = 0)
Global Dim TableauDeLaMort(3)


; je remplis certaines cases avec des 1
TableauDeLaMort(0) = 1 ; case 0
TableauDeLaMort(1) = 0 ; case 1
TableauDeLaMort(2) = 0 ; case 2
TableauDeLaMort(3) = 1 ; case 3


; je creer ma procedure
Procedure VerificationDeLaMortQuiTue()
For a = 0 To 3
 If TableauDeLaMort(a) = 0
  ProcedureReturn #True ; retourne (1) vrai (le plateau a encore une ou des cases vides)
Else 
 ProcedureReturn #False ; retourne (0) faux (le plateau est plein)
 EndIf 
Next 
EndProcedure


; je lance ma procedure qui verifie si il y a encore des 0
Debug VerificationDeLaMortQuiTue()


Le problème, c'est que ça ne renvoie pas pour tout les cas mais uniquement sur la première case.
Si on change la valeur de la première case, la procédure fonctionne. On dirait que les 3 autres cases sont ignoré. :oops: :cry:

J'ai toujours eu du mal avec les ProcedureReturn
D'avance merci






@++
Dernière modification par venom le jeu. 27/mai/2021 19:50, modifié 1 fois.
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Procedure pour tableau vide

Message par venom »

Oops... Zé réussi :lol:
Je laisse l'ancien code et post ici le nouveau :

Code : Tout sélectionner

; création d'un tableau de 4 cases "vides" (les 4 cases = 0)
Global Dim TableauDeLaMort(3)


; je remplis certaines cases avec des 1
TableauDeLaMort(0) = 1 ; case 0
TableauDeLaMort(1) = 1 ; case 1
TableauDeLaMort(2) = 1 ; case 2
TableauDeLaMort(3) = 1 ; case 3


; je creer ma procedure
Procedure VerificationDeLaMortQuiTue()
For a = 0 To 3
 If TableauDeLaMort(a) = 0
  ProcedureReturn #True ; retourne (1) vrai (le plateau a encore une ou des cases vides)
 EndIf 
Next 
EndProcedure


; je lance ma procedure qui verifie si il y a encore des 0
Debug VerificationDeLaMortQuiTue()
il ne fallait simplement pas mettre le else






@++
Dernière modification par venom le jeu. 27/mai/2021 19:51, modifié 1 fois.
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Procedure pour tableau vide

Message par MLD »

Bonjour venon
regarde comme ceci

Code : Tout sélectionner

; création d'un tableau de 4 cases "vides" (les 4 cases = 0)
Global Dim TableauDeLaMort(3);


; je remplis certaines cases avec des 1
TableauDeLaMort(0) = 1 ; case 0
TableauDeLaMort(1) = 0  ; case 1
TableauDeLaMort(2) = 0; case 2
TableauDeLaMort(3) = 1 ; case 3


; je creer ma procedure
Procedure VerificationDeLaMortQuiTue()
For a= 0  To 3
   If TableauDeLaMort(a) = 0 :index  = #True: EndIf
Next
If index  = #True
  ProcedureReturn  1
Else
  ProcedureReturn  0
EndIf  
EndProcedure


; je lance ma procedure qui verifie si il y a encore des 0
Debug VerificationDeLaMortQuiTue()
Dernière modification par MLD le dim. 23/mai/2021 9:08, modifié 1 fois.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Procedure pour tableau vide

Message par kernadec »

bjr venon
tu a commis une dyslexie dans ton commentaire :mrgreen: :mrgreen:
[Commentaire de Venon -quote]
ProcedureReturn #True ; retourne (1) vrai (le Plateau a encore une ou des cases vides)
[/quote]
cordialement
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Procedure pour tableau vide

Message par venom »

@kernadec
:lol: J'avoue c'est a n'y rien comprendre...

@MDL
Que dois-je en déduire ? Car mon second code fonctionne ! Quel est la meilleure attitude a avoir dans ce cas là ?






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Procedure pour tableau vide

Message par Marc56 »

ProcedureReturn fait ce que tu lui a demandé: quitter dès que la première condition est OK.

Si tu veux que tout soit testé, alors tu peux faire comme ceci (incrémenter un compteur et voir à la fin si > 0)

Code : Tout sélectionner

; création d'un tableau de 4 cases "vides" (les 4 cases = 0)
Global Dim TableauDeLaMort(3)

; je remplis certaines cases avec des 1
TableauDeLaMort(0) = 1 ; case 0
TableauDeLaMort(1) = 0 ; case 1
TableauDeLaMort(2) = 0 ; case 2
TableauDeLaMort(3) = 1 ; case 3

; je creer ma procedure
Procedure VerificationDeLaMortQuiTue()
    For a = 0 To 3
        Debug "Boucle: " + a
        If TableauDeLaMort(a) = 0
            Vide + 1 
        EndIf 
    Next 
    If vide > 0
        ProcedureReturn 1
    EndIf
EndProcedure


; je lance ma procedure qui verifie si il y a encore des 0
Debug VerificationDeLaMortQuiTue()
PS. J'écris 1 plutôt que #True car c'est moins de lettres à écrire :mrgreen:
Inutile de faire ProcedureReturn 0 dans le cas contraire: c'est implicite.

:wink:
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Procedure pour tableau vide

Message par MLD »

@Venon
Simplement si tu souhaite les deux réponses plein ou pas plein (Bien entendus je parle du tableau pas de moi) :oops: :lol:
Ceci permet une commande ultérieure.
Bonne journée.
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Procedure pour tableau vide

Message par venom »

Merci pour vos réponses.
Je vais essayer de compiler ton code MDL car si il permet de savoir le nombre de cases pleine et vide, ça pourrait m'intéresser 8)






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Procedure pour tableau vide

Message par MLD »

Comme ceci

Code : Tout sélectionner

; création d'un tableau de 4 cases "vides" (les 4 cases = 0)
Global Dim TableauDeLaMort(4);**************


; je remplis certaines cases avec des 1
TableauDeLaMort(0) = 1 ; case 0
TableauDeLaMort(1) = 0  ; case 1
TableauDeLaMort(2) = 1; case 2
TableauDeLaMort(3) = 0 ; case 3


; je creer ma procedure
Procedure VerificationDeLaMortQuiTue()
index  = 0 
For a= 0  To 3
   If TableauDeLaMort(a) = 0 :index  = index +1: EndIf
Next
If index  > 0
  ProcedureReturn  index
EndIf  
EndProcedure
; je lance ma procedure qui verifie si il y a encore des 0
 cv = VerificationDeLaMortQuiTue()
Debug "case vide:  " + Str(cv)  
Debug "case pleine:  " + Str(ArraySize(TableauDeLaMort()) - cv)


Bon dimanche :lol:
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Procedure pour tableau vide

Message par venom »

:roll: Pas mal. Merci pour le code :P






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Procedure pour tableau vide

Message par Micoute »

Moi, j'aurais utilisé ArraySize(TableauDeLaMort())
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Procedure pour tableau vide

Message par venom »

Oui, comme l'a fait MDL juste au dessus :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre