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 :

Besoin d'aide pour simplifier un programme.


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Besoin d'aide pour simplifier un programme.
    Bonjour, je suis actuellement en stage de perfectionnement dans une école d'ingénieur. J'ai eu mon premier cours de VB, le prof nous a demandé de programmer afin d'obtenir le chiffre moyen inscrit dans l'une des 3 fenêtres Text.Text.

    Pour ce faire exemple Val(Text1.Text)=20 Val(Text2.Text)=5 et Val(Text3.Text)= 8.
    donc je devrais normalement obtenir le chiffre 8 dans Text4.Text (qui est la fenêtre de réponse).

    J'obtiens donc:
    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
    If Val(Text1.Text) > Val(Text2.Text) Then
       If Val(Text1.Text) < Val(Text3.Text) Then
         If Val(Text1.Text) > Val(Text3.Text) Then
             If Val(Text1.Text) < Val(Text2.Text) Then
                Text1.Text = Text4.Text
             End If
         End If
       End If
    End If
    If Val(Text2.Text) > Val(Text1.Text) Then
       If Val(Text2.Text) < Val(Text3.Text) Then
          If Val(Text2.Text) > Val(Text3.Text) Then
             If Val(Text2.Text) < Val(Text1.Text) Then
                Text2.Text = Text4.Text
             End If
          End If
       End If
    End If
     
     
    If Val(Text3.Text) > Val(Text2.Text) Then
        If Val(Text3.Text) < Val(Text1.Text) Then
             If Val(Text3.Text) > Val(Text1.Text) Then
                  If Val(Text3.Text) < Val(Text2.Text) Then
                       Text3.Text = Text4.Text
                  End If
             End If
        End If
    End If
    End Sub
    Le problème est que je trouve mon programme lourd, un ami ma dit que mon programme n'est pas facile a comprendre et qu'il est possible de le raccourcir en utilisant une boucle While, End While Wend

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 417
    Points : 5 816
    Points
    5 816
    Par défaut
    Bonjour et Bienvenu sur DVP

    Voici une possibilité de solution :
    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
    Option Explicit
    Dim I%, J%, arrVal(1 To 3) As Integer
    Private Sub Command1_Click()
        ' On teste la saisie dans chaque TextBox
        If Not IsNumeric(Text1.Text) Or Not IsNumeric(Text2.Text) Or Not IsNumeric(Text3.Text) Then
            MsgBox "Au moins l'une des valeurs entrées n'est pas valide"
            Exit Sub
        End If
        ' On met le contenu des TextBox dans un tableau à 3 éléments pour les trier
        arrVal(1) = CInt(Text1.Text)
        arrVal(2) = CInt(Text2.Text)
        arrVal(3) = CInt(Text3.Text)
        ' On appelle la procédure de recherche
        Recherche 3, arrVal()
    End Sub
    '
    ' On trie le tableau pour en prendre la valeur à la position 2
      Sub Recherche(n%, T() As Integer)
       Dim min%, I%, J%, aux%
     
        For I = 1 To 3
          T(I) = arrVal(I)
        Next I
          For I = 1 To n - 1
              min = I
              For J = I + 1 To n
                If T(J) > T(min) Then
                   min = J
                   aux = T(I)
                   T(I) = T(min)
                   T(min) = aux
                End If
             Next J
         Next I
        Text4.Text = T(2)
    End Sub

  3. #3
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    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 112
    Points : 16 645
    Points
    16 645
    Par défaut
    Salut Xaíg62

    Un petit à l_autodidacte
    Quasiment la même approche (moins commenté, plus condensé)
    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
    Private Sub Command1_Click()
    Text4.Text = RecupIntermed(Array(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text)))(1)
    End Sub
     
    Function RecupIntermed(Donn)
        Dim T As Integer, U As Integer, ValTemp As Single
        For T = UBound(Donn) - 1 To 0 Step -1
            For U = 0 To T
                If Donn(U) > Donn(U + 1) Then
                    ValTemp = Donn(U + 1)
                    Donn(U + 1) = Donn(U)
                    Donn(U) = ValTemp
                End If
            Next U
        Next T
        RecupIntermed = Donn
    End Function
    Citation Envoyé par Xaíg62
    le prof nous a demandé de programmer afin d'obtenir le chiffre moyen inscrit dans l'une des 3 fenêtres
    J'ai tout de même un doute, pour moi le résultat moyen devrait être 11 ((20+5+8)/2).

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut, merci pour les réponses . J'essaie de comprendre le language VB et je constate qu'il y'a plein de façon d'écrire un programme, j'ai à peu prêt compris il faut que je connaisse d'avantage de vocabulaire de programmation.

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 969
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 436
    Points
    15 436
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    J'ai tout de même un doute, pour moi le résultat moyen devrait être 11 ((20+5+8)/2).
    D'accord avec toi (quoique, : /3 serait sûrement mieux !), le problème, c'est que déjà, ça :
    Citation Envoyé par Xaíg62 Voir le message
    obtenir le chiffre moyen inscrit dans l'une des 3 fenêtres Text.Text.
    ça ne veut rien dire !

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    Citation Envoyé par Jipété Voir le message
    D'accord avec toi (quoique, : /3 serait sûrement mieux !), le problème, c'est que déjà, ça :
    Citation Envoyé par Xaíg62 Voir le message
    ... afin d'obtenir le chiffre moyen inscrit dans l'une des 3 fenêtres Text.Text.
    ça ne veut rien dire !
    Merci, je croyais être le seul à être fatigué !

    mais
    Citation Envoyé par Xaíg62 Voir le message
    J'obtiens donc:
    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
    If Val(Text1.Text) > Val(Text2.Text) Then
       If Val(Text1.Text) < Val(Text3.Text) Then
         If Val(Text1.Text) > Val(Text3.Text) Then
             If Val(Text1.Text) < Val(Text2.Text) Then
                Text1.Text = Text4.Text
             End If
         End If
       End If
    End If
    If Val(Text2.Text) > Val(Text1.Text) Then
       If Val(Text2.Text) < Val(Text3.Text) Then
          If Val(Text2.Text) > Val(Text3.Text) Then
             If Val(Text2.Text) < Val(Text1.Text) Then
                Text2.Text = Text4.Text
             End If
          End If
       End If
    End If
     
     
    If Val(Text3.Text) > Val(Text2.Text) Then
        If Val(Text3.Text) < Val(Text1.Text) Then
             If Val(Text3.Text) > Val(Text1.Text) Then
                  If Val(Text3.Text) < Val(Text2.Text) Then
                       Text3.Text = Text4.Text
                  End If
             End If
        End If
    End If
    End Sub
    ça non plus ne veut rien dire car le retour est systématiquement faux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Val(Text1.Text) < Val(Text3.Text) AND Val(Text1.Text) > Val(Text3.Text) Then
       ou
    If Val(Text2.Text) < Val(Text3.Text) AND Val(Text2.Text) > Val(Text3.Text) Then
       ou
    If Val(Text3.Text) > Val(Text1.Text) AND Val(Text3.Text) < Val(Text2.Text) Then
    2 valeurs ne peuvent être supérieures et inférieures entre elles en même temps, enfin dans les mathématiques que je connais.

Discussions similaires

  1. Besoin d'aide pour simplifier un programme.
    Par Xaíg62 dans le forum VBScript
    Réponses: 0
    Dernier message: 12/10/2014, 14h59
  2. Réponses: 1
    Dernier message: 01/05/2010, 18h52
  3. Réponses: 6
    Dernier message: 23/06/2007, 13h29
  4. Réponses: 1
    Dernier message: 12/04/2007, 12h30
  5. Besoin d'aide pour un petit programme
    Par Nico35 dans le forum C
    Réponses: 13
    Dernier message: 25/05/2006, 23h21

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