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 :

[VB] Problème de function / sub (tableau comme paramètre)


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 17
    Points
    17
    Par défaut [VB] Problème de function / sub (tableau comme paramètre)
    salut tt le monde

    je suis vraiment un débutant de VB et donc vs allez être nombreux à pouvoir répondre à ma modeste question, bon voilà j'ai plusieurs procédures et des fonctions que je veux les applez d'une procédure main le problème c'est que j'ai déclarer un tableau de n entier et je pense que c'est de là que vient le prob.

    bon vue que mon code est tré petit je me suis permis de le mettre ici pour pouvoir me dire où ça marche pas.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Sub saisir(t() As Integer, n As Integer)
     
    For i = 1 To n
        t(i) = InputBox("entrez t(" & i & ")")
    Next
     
    End Sub
     
    '-------------------------------------------------
     
    Function moyenne(t() As Integer, n As Integer)
    Dim s As Integer
     
    For i = 1 To n
        s = s + 1
    Next
     
    moyenne = s / n
     
    End Function
     
    '----------------------------------------------------
     
    Function valmax(t() As Integer, n As Integer)
    Dim s As Integer
     
    valmax = t(1)
    For i = 1 To n - 1
        If t(i) < t(i + 1) Then
            valmax = t(i + 1)
        End If
    Next
     
    End Function
     
    '---------------------------------------------------------
     
    Sub main()
    Dim t(1 To n) As Integer, n As Integer
    saisir
    MsgBox ("la valueur moyenne est " & moyenne)
    MsgBox ("la valeur max est " & valmax)
    End Sub
    en attendant vos réponses je vous remerice infiniment

    et bonne journée à vous tous

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    y'a des trucs bizares...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function moyenne(t() As Integer, n As Integer)
    Dim s As Integer
     
    For i = 1 To n
    s = s + 1
    Next
     
    moyenne = s / n
     
    End Function
    cette fonction revoie toujours 1 et en plus i n'est pas déclaré et le type de donnée que renvoie ta fonction non plus.

    remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub saisir(t() As Integer, n As Integer)
     
    For i = 1 To n
    t(i) = InputBox("entrez t(" & i & ")")
    Next
     
    End Sub
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub saisir(t() As Integer, n As Integer)
     
    For i = 1 To n
    t(i) = val(InputBox("entrez t(" & i & ")"))
    Next
     
    End Sub
    ça t'évitera déja des erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function valmax(t() As Integer, n As Integer)
    Dim s As Integer
     
    valmax = t(1)
    For i = 1 To n - 1
    If t(i) < t(i + 1) Then
    valmax = t(i + 1)
    End If
    Next
     
    End Function
    i n'est pas déclaré, les données que renvoit ta fonction non plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub main()
    Dim t(1 To n) As Integer, n As Integer
    saisir
    MsgBox ("la valueur moyenne est " & moyenne)
    MsgBox ("la valeur max est " & valmax)
    End Sub
    tu ne peut déclarer t comme ça. met plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub main()
    Dim t() As Integer
    dim n As Integer
    redim t(1to n)
    saisir
    MsgBox ("la valueur moyenne est " & moyenne & vbcrlf & "la valeur max est " _
     & valmax)
    End Sub
    tu à tout.

  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
    tiens essai de comprendre l'utilisation de UBound et Redim ( voir )

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Sub saisir(t() As Integer)
    For i = 1 To UBound(t)
        t(i) = InputBox("entrez t(" & i & ")")
    Next
    End Sub
    '-------------------------------------------------
    Function moyenne(t() As Integer)
    Dim s As Integer
    n = UBound(t)
     
    For i = 1 To n
        s = s + 1
    Next
    moyenne = s / n
    End Function
    '----------------------------------------------------
    Function valmax(t() As Integer)
    Dim s As Integer
    n = UBound(t)
    valmax = t(1)
    For i = 1 To n - 1
        If t(i) < t(i + 1) Then
            valmax = t(i + 1)
        End If
    Next
    End Function
    '---------------------------------------------------------
    Sub main()
    Dim t() As Integer, n As Integer
    n = Val(InputBox("Valeur de n :"))
    If n <= 0 Then Exit Sub
    ReDim t(1 To n)
    saisir t
    MsgBox ("la valueur moyenne est " & moyenne(t()))
    MsgBox ("la valeur max est " & valmax(t()))
    End Sub

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci méphistopheles, pour cette fonction c'est juste une faute de frap, j'ai remplacer i par 1 je l'ai corrigé maintenant
    [FONT=monospace]
    [/FONT]Function moyenne(t() As Integer, n As Integer)
    Dim s As Integer

    For i = 1 To n
    s = s + i
    Next

    moyenne = s / n

    End Function
    [FONT=monospace]
    Svp j'ai d'autre question concernant votre réponse :

    1) tt d'abord pour cette ligne
    [/FONT]
    t(i) = InputBox("entrez t(" & i & ")")j'ai pas compris pq vous l'avez remplacer par celle là

    t(i) = val(InputBox("entrez t(" & i & ")"))
    à quoi sert val ?


    2)
    la varible qui contient le résultat de la fonction, comment je peut la déclarer ? je peut le faire normalement comme tte autre déclaration ou bien jdoit la mettre dans le paramètre de la fonction ?

    et merci bcp encore une fois pour votre aide

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    ca semble bien long

    sub pluscourt()
    const nbval=20
    dim compteur as integer
    dim reponse as double
    dim somme as double
    dim mini as double
    dim maxi as double
    min=10^300
    maxi=-mini
    for compteur=1 to nbal
    reponse=val(inputbox("un nombre fissa"))
    somme=somme+reponse
    if reponse>maxi then maxi=reponse
    if reponse<mini then mini=reponse
    next compteur
    msgbox( "moyenne :" & somme/nbval & " mini:" & mini & " maxi:" & maxi)
    end sub

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    merci tt le monde

    j'ai pu enfin corriger tt les prob, voici mon code final



    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Sub saisir(t() As Integer, n As Integer)
    For i = 1 To n
        t(i) = InputBox("entrez t(" & i & ")")
    Next
     
    End Sub
     
    '-------------------------------------------------------
     
    Function moyenne(t() As Integer, n As Integer) as double
    Dim s As Integer, i as integer
     
    For i = 1 To n
        s = s + i
    Next
     
    moyenne = s / n
     
    End Function
     
    '-------------------------------------------------------
     
    Function valmax(t() As Integer, n As Integer) as integer
    Dim s As Integer, i as integer
     
    valmax = t(1)
    For i = 1 To n - 1
        If vlamax < t(i + 1) Then
            valmax = t(i + 1)
        End If
    Next
     
    End Function
     
    '-------------------------------------------------------
     
    Function valmin(t() As Integer, n As Integer) as integer
    Dim s As Integer, i as integer
     
    valmin = t(1)
    For i = 1 To n - 1
        If t(i) > t(i + 1) Then
            valmin = t(i + 1)
        End If
    Next
     
    End Function
     
    '-------------------------------------------------------
     
    Sub main()
    Dim t() As Integer, n As Integer
    ReDim t(1 To n)
    saisir t,n
    MsgBox ("la valueur moyenne est " & moyenne(t,n))
    MsgBox ("la valeur max est " & valmax(t,n))
    MsgBox ("la valeur min est " & valmin(t,n))
     
    End Sub
    merci tt le monde encore une fois, ceci dit je vais cliquez sur le bouton résolu

  7. #7
    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
    ? et c'est ou que tu affecte une valeur à n ?

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

Discussions similaires

  1. c++ vers c# tableau comme paramétres de fonction
    Par punto dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/03/2008, 11h21
  2. Réponses: 2
    Dernier message: 24/08/2007, 01h54
  3. Réponses: 2
    Dernier message: 03/12/2006, 12h37
  4. Problème de passage de tableau en paramètre
    Par Tueur_a_gage dans le forum ASP
    Réponses: 9
    Dernier message: 16/11/2006, 20h09
  5. [JSP] Problème pour passer un array comme paramètre
    Par MxPx_23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/06/2006, 17h13

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