IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

min et max d'un tableau


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2009
    Messages : 154
    Points : 45
    Points
    45
    Par défaut min et max d'un tableau
    j'ai fait une fonction qui doit retourner le minimum et le maximum d'un tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private function minmax(byval tnb as variant) as integer
    dim i,min,max as integer
    for i=lbound(tnb) to ubound(tnb)
    if t(i)>max then max=t(i)
    if t(i)<min then min=t(i)
    next i
    minmax=max
    minmax=min
    end function
    est ce qu'il y a des fautes dans cette fonction et surtout dans le retour de max et min en même temps dans cette fonction.
    mercii d'avance.

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Une fonction ne peux retourner qu'une seule valeur !
    Donc ta fonction retourna systèmaiquement la valeur min.
    Il te faut donc faire deux fonctions
    une fonction Min et une fonction Max
    Par ailleur dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim i,min,max as integer
    seule la valeur i sera déclarée en integer, les autres seront des variants

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Coucou Delbeke ..

    Citation Envoyé par Delbeke Voir le message
    ..
    Par ailleurs dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim i,min,max as integer
    seule la valeur i sera déclarée en integer, les autres seront des variants
    en fait c'est max .. qui devient un entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Command1_Click()
    Dim i, min, max As Integer
    Debug.Print " i : " & TypeName(i)
    Debug.Print " min : " & TypeName(min)
    Debug.Print " max : " & TypeName(max)
    Stop 'Actionnez CTRL+G pour accéder  à la fenêtre Exécution.
    End Sub
    résultat dans fenêtre exécution :
    Citation Envoyé par Fenêtre exécution
    i : Empty
    min : Empty
    max : Integer

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    Citation Envoyé par Delbeke Voir le message
    Une fonction ne peux retourner qu'une seule valeur !
    Donc ta fonction retourna systèmaiquement la valeur min.
    Il te faut donc faire deux fonctions
    une fonction Min et une fonction Max
    salut

    ou alors se servir s('une structure, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Type minetmax
      minimum As Integer
      maximum As Integer
    End Type
    code de la fonction dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Function minmax(ByVal tnb As Variant) As minetmax
      Dim i As Integer
      minmax.maximum = tnb(0)
      minmax.minimum = tnb(0)
      For i = LBound(tnb) To UBound(tnb)
        If tnb(i) > minmax.maximum Then minmax.maximum = tnb(i)
        If tnb(i) < minmax.minimum Then minmax.minimum = tnb(i)
      Next i
    End Function
    exemple d'utilisation dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tnb = Array(1, 3, 10, 4)
    MsgBox minmax(tnb).maximum & vbCrLf & minmax(tnb).minimum
    tout ceci à adapter.

  5. #5
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Zoli

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2009
    Messages : 154
    Points : 45
    Points
    45
    Par défaut
    mercii beaucoup.
    vous avez bien répondu.
    j'ai une autre question SVP concernant une fonction aussi, mais cette fois qui permet de vérifier si les champs saisis (pare exemple nb1.text et nb2.text) sont non vides et qu'ils sont de type double.
    je ne sais pas comment faire pour cette fonction et surtout pour vérifier si un nombre est de type double..
    je veux une solution ou bien indication .
    mercii pour vos...

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Tous les nombres sont de type double. C'est le type de variable qui admet le plus de type de nombres. On peut y stocker des valeur bolean, integer, long, single et currency. Vb se chargeant de façon implicite de la convertion
    Donc tu as peut être un problème d'énoncé.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2009
    Messages : 154
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Delbeke Voir le message
    Tous les nombres sont de type double. C'est le type de variable qui admet le plus de type de nombres. On peut y stocker des valeur bolean, integer, long, single et currency. Vb se chargeant de façon implicite de la convertion
    Donc tu as peut être un problème d'énoncé.

    merci d'abord pour vous.
    non c'est pas un problème d'annoncé.
    est ce que je peux utiliser fonction de conversion CDbl.mais comment?
    ou bien je vérifie seulement dans cette fonction qu'ils sont des nombres.
    j'attends d'autres réponses ....

  9. #9
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 107
    Points : 16 633
    Points
    16 633
    Par défaut
    Petite experience
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim MeVariable As Variant
    MeVariable = 1.79769313486231E+308
    MsgBox "MeVariable As Variant = 1.79769313486231E+308" & vbCrLf & TypeName(MeVariable)
    MeVariable = 1
    MsgBox "MeVariable As Variant = 1" & vbCrLf & TypeName(MeVariable)
    MeVariable = CDbl(2)
    MsgBox "MeVariable As Variant = CDbl(2)" & vbCrLf & TypeName(MeVariable)
    MeVariable = "du littéral"
    MsgBox "MeVariable As Variant = ""du littéral""" & vbCrLf & TypeName(MeVariable)
     
     
    Dim VariableMe As Double
    VariableMe = 10
    MsgBox "VariableMe As Double = 10" & vbCrLf & TypeName(VariableMe)
    VariableMe = CVar(123)
    MsgBox "VariableMe As Double = CVar(123)" & vbCrLf & TypeName(VariableMe)
    Ce qui confirme le dernier post de Delbeke (salut).
    Pour une variable déclarée Variant ou non typé, VB va la considérer (TypeName(VariableMe)) du type le mieux adapté suivant la valeur quelle contient, pour autant, la place en mémoire sera de 16 octets pour un contenu numérique et de 22 octets + longueur de la chaîne pour un contenu littéral.
    Par contre une variable typé conserve son type, même en employant une conversion.

  10. #10
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Ce que je peut te proposer c'est utiliser la fonction IsNumeric(MaVar)

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2009
    Messages : 154
    Points : 45
    Points
    45
    Par défaut
    merci pour vous.......

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche des indices min et max dans un tableau 2D
    Par Bysbobo dans le forum LabVIEW
    Réponses: 3
    Dernier message: 03/05/2013, 08h36
  2. min et max d'un tableau
    Par nina2007 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 16/03/2012, 20h02
  3. Fonction Min Max pour un tableau
    Par WaKaaN dans le forum Général Python
    Réponses: 5
    Dernier message: 14/10/2008, 16h18
  4. Recherche Min/Max dans un tableau
    Par kuroro20 dans le forum C
    Réponses: 4
    Dernier message: 26/10/2007, 16h54
  5. Réponses: 5
    Dernier message: 27/11/2006, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo