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 :

[débutant] projet Visual Basic 6


Sujet :

VB 6 et antérieur

  1. #21
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 25
    Points
    25
    Par défaut
    Bonjour à tous et merci (heureux de vous divertir )

    pour l'algo du deuxième plus grand nombre, j'ai fait les modifications et j'espere ne pas avoir été à côté de la plaque :

    Algo deuxième plus grand nombre de la liste (D tab() D n num ; R res num)

    Déclaration :
    Variable max1 num
    Variable max2 num
    Variable k numérique

    Début :
    Pour k de Tab(2) à Tab(n) faire
    Si tab (k) > max 1 alors
    Max2 ← Max1
    Max1 ← tab (k)
    Sinonsi
    Tab (k) > Max 2 alors
    Max 2 ← tab(k)
    FinSi
    FinPour
    Res ← Max 2
    FIN

    Et par contre aprés l'avoir relu, j'ai trouvé que mon algo sur le palindrome était completement faux, voilà la nouvelle version:

    Algo Palindrome (D : tab() D n num R res logique)

    Déclaration :
    Variable j num
    Variable i num

    Début :
    Res ← Vrai
    Pour i de 0 à n/2 et j de n/2 à n faire
    Si tab (i) ≠ tab (j) alors
    Res ← Faux
    Sinon
    i ← i + 1
    j ← j + 1
    Fin si
    Fin Pour
    FIn

    Voila, si vous pouvez me dire ce que vous pensez de ces trois algo, Merci de votre indulgence et de votre patience

  2. #22
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Ton deuxième algo est potentillement faux puisque tu ne prends pas en compte la parité du nombre d'élément

  3. #23
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Je regarde aujourd'hui ton deuxième algo (celui de vérification de palindrome) , jere3110

    Pour l'instant (et par pur instinct) ce que j'entrevois est

    - déterminer le rang rg du dernier élément
    - une boucle de lecture (for I = 0 to rg) - (en considérant que 0 est le rang du 1er ... je dis celà car par défaut sous VB le 1er aurait le rang O)
    - comparaison de l'élément I avec l'élément rg - I et
    ==> si = on continue
    ==> si différent : ce n'est donc pas un palindrome et on sort immédiatement de la boucle.

    - on quitte également la boucle lorsque I >= rg-I

    voilà, grosso modo, le mécanisme que j'entrevois et qui sera peut-être à affiner.

    Bonne journée.

  4. #24
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bon...

    L'instinct était bon

    ce qui suit fait le boulot et ne se préoccupe pas de la parité du nombre d'éléments (tout en ne "balayan"t plus lorsque le "point de symétrie" est atteint) :

    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
    Private Sub Command1_Click()
      Dim i As Integer, rg As Integer, palindrome As Boolean
      maliste = Array(25, 2, 24, 2, 9, 1, 24, 2, 25) ' pas un palindrome
      palindrome = True
      rg = UBound(maliste)
      For i = 0 To rg
        If i >= rg - i Then Exit For
        If maliste(i) <> maliste(rg - i) Then
          palindrome = False
          exit for
        End If
      Next i
      MsgBox palindrome
     
     
      maliste = Array(25, 2, 24, 1, 9, 1, 24, 2, 25) ' est un palindrome
      palindrome = True
      rg = UBound(maliste)
      For i = 0 To rg
        If i >= rg - i Then Exit For
        If maliste(i) <> maliste(rg - i) Then
          palindrome = False
          exit for
        End If
      Next i
      MsgBox palindrome
    End Sub

  5. #25
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Ceci étant dit :

    Ce code est optimisable.

    Comment ?

    en évitant de recalculer If i >= rg - i

    Le principe est simple (et je vous laisse faire) :
    Il suffit de s'arrêter à l'entier de la division par 2 du nombre d'éléments.

    Pourquoi ? simple : si le nombre d'élément est impair, l'élément "central" sera unique... tout simplement.

    A jere3110 de faire sur cette seconde base de réflexion (c'est simple).

  6. #26
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 25
    Points
    25
    Par défaut
    Bonjour, je te remerci ucfoutu pour le code que tu m'a donné, seulement j'avou ne pas comprendre pourqoui on doit y rentrer:

    maliste = Array(25, 2, 24, 2, 9, 1, 24, 2, 25)

    les nombres ne doivent t'ils pas être rentré au niveau de l'interface au moyen d'une text box dans lequel on écrit le nombre et d'un bouton qui les ajoutent ensuitent dans la liste. A mon sens, une fois cette liste rempli, on appuyer sur un second bouton déclenchant un label disant oui ou non pour palindrome.

    pour plus de clarté voilà l'interface à laquelle je pensai:

    C'est à optimiser mais je pense que qu'avec ca devrait aller.

  7. #27
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    c'est un exemple de test qu'il te donne, évidemment que tu ne dois pas le mettre dans ta fonction.
    Par contre si ta saisie est entièrement manuelle, tu n'as pas besoin de fonction complête puisque tu peux gérer le palindrome et le second max au cours de l'ajout ou de la suppression.

  8. #28
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 25
    Points
    25
    Par défaut
    Bonsoir:
    Je suis en train de taper les codes sur vb, seulement je me retrouve bloquer: je ne trouve pas le moyen d'afficher ma liste 1 inverser dans la liste 2. j'ai créer un module sensinverse contenant la procédure mais je ne sais pas comment écrire la syntaxe de la procédure cmd_inverser_clik.

  9. #29
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Tu parcours ta list 1 en partant de listcount et en allant vers 0 pour extraire tes élément et tu ajoutes à la liste 2 avec additem

  10. #30
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 25
    Points
    25
    Par défaut
    Désolé mais je comprend pas trop , quand tu dis parcourir est ce que ca signifie utiliser un tableau et le boucler ensuite avec un pour, auquel le additem ressemblerait à :

    List2.additem(tableau(i))

    désolé mais j'ai l'impression de mettre perdu la

  11. #31
    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 038
    Points
    20 038
    Par défaut
    Montre nous le code utilisé pour remplir la list1...? tu n'utilise pas une boucle FOR pour cela ..?

    sinon pour Parcourir ta list1 tu utilise la boucle FOR... voir aussi Step ..

  12. #32
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 25
    Points
    25
    Par défaut
    la liste 1 se rempli grace a au cmd_ajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Cmd_ajouter_Click()
    List1.AddItem (text_ajouter.Text)
    text_ajouter = ""
    End Sub
    une fois cette liste rempli je clik sur le bouton inverser qui est censer me remplir la liste 2 en utilisant la procédure sensinverse

  13. #33
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonsoir,


    Mais alors jere3110, si tu utilises finalement une listbox, ton tout premier algo n'a plus de justication d'être !
    Il te suffit de mettre la propriété sorted de cette listbox à True et de lire l'avant-dernier article de la listbox !!

  14. #34
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 25
    Points
    25
    Par défaut
    bonsoir,
    tu parle de l'algo qui est sensé trouver le deuxième plus grand de la liste ??
    Je ne suis pas assez caller en VB pour connaitre toute les propriétés, mais on atend de moi que je traduise un algo en VB ki est sensé faire cela...

  15. #35
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonsoir,


    Mais alors jere3110, si tu utilises finalement une listbox, ton tout premier algo n'a plus de justication d'être !
    Il te suffit de mettre la propriété sorted de cette listbox à True et de lire l'avant-dernier article de la listbox !!
    Certainement pas pour des valeurs numériques, c'est un classement alphabétique

  16. #36
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Mais si,

    Il suffit de formater les données numériques

  17. #37
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 25
    Points
    25
    Par défaut
    voilaou j'en suis avec le code de mon interface :

    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
     Private Sub Cmd_ajouter_Click()
    List1.AddItem (text_ajouter.Text)
    text_ajouter = ""
    End Sub
     
    Private Sub Cmd_effacer_Click()
    List1.Clear
    List2.Clear
    End Sub
     
    Private Sub Cmd_inverser_Click()
     
    End Sub
     
    Private Sub Form_Load()
    Cmd_Ajouter.Enabled = False
    End Sub
     
    Private Sub text_ajouter_Change()
    If (text_ajouter.Text <> "") Then
    If IsNumeric(text_ajouter.Text) Then
    Cmd_Ajouter.Enabled = True
    End If
    End If
    If text_ajouter.Text = "" Then
    Cmd_Ajouter.Enabled = False
    End If
    End Sub
    la commande inverser me pose problème.

  18. #38
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Tiens : voilà du moins inélégant qu'un formatage avec des 000 devant :

    Une listbox avec la propriété sorted = true

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Command1_Click()
      TOTO = Space(10)
      For i = 1 To 20
        RSet TOTO = i
        List1.AddItem TOTO
      Next
    End Sub

  19. #39
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 25
    Points
    25
    Par défaut
    merci ucfoutu, c'est censer remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Cmd_ajouter_Click()
    List1.AddItem (text_ajouter.Text)
    text_ajouter = ""
    End Sub
    c'est ca ??

    Quoi qu'il en soit j'ai besoin d'arriver à mettre en place ma procédure sensinverse dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Cmd_inverser_Click()
     
    End Sub
    je ne sais pas du tout comment m'y prendre simplement pour: prendre ma liste1, lui appliquer la procédure sens inverse et afficher le résultat ensuite dans liste2.

    Désolé si je suis lour

  20. #40
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    mouais, je ne suis pas persuadé que tu ne sois pas gagnant à gérer une liste ordonnée à la saisie plutôt que de formater les entrée. Je n'ai plus VB6 pour tester sur ce poste mais je regarderais à l'occasion.

    Jere3110>>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For cmpt= List1.ListCount-1 to 0 Step -1
       List2.AddItem List1.List(cmpt)
    Next cmpt

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

Discussions similaires

  1. Compilation d'un Projet Visual Basic en ligne de commande
    Par Nico+10) dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/03/2007, 09h37
  2. Setup projet visual basic
    Par krugarka dans le forum Installation, Déploiement et Sécurité
    Réponses: 1
    Dernier message: 24/02/2007, 06h12
  3. [VBA-E]Débutant sous Visual Basic
    Par Mpierre dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/06/2006, 14h32
  4. Réponses: 4
    Dernier message: 31/05/2006, 14h44
  5. projet visual basic et publication web
    Par cari dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/12/2005, 07h50

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