Aide en VB

Bonjour,
J'ai un petit programme (scolaire) à faire en VB, mais je ne vois pas comment le faire.

voila l'énoncé :

Soit S une suite de nombre entiers positifs ordonnés par ordre croissant. Ecrire un algorithme permettant de déterminer la longueur L de la plus longue sous-suite extraite de S et ne comportant que des éléments identiques.
Exemple : pour S= (1, 2, 2, 7, 7,7 ,8 ,9 ,9) on a L=3

Si quelqu'un avait une piste pour m'aider, je ne sais même pas quelle fonction itérative utiliser.

Merci
Configuration: Windows XP
Firefox 2.0.0.9

11 réponses

  1. je te conceil pour ton probleme scolaire de faire comme suit
    utiliser des boucles itératives comme tantque .............faire
    increment tant que tu as des valeurs identiques et superieur
    sortir de la premiere boucle
    l'idee ici si tu utilise un tableau ce prserver les compteurs pour pouvoir afficher la séquences la plus longue
    refaire le travail en incrementant de +1 ton compteur avec la boucle repeter...........jusqu'à la fin tu tableau
    à la sortie de traitement tu doit avoir un compteur de depart pour la séquence et un compteur d'arriver
    ***************************
    bon travail
    la programmation à besion de pertinnece et ne baisse pas les mains à toi de programmmer tous ca
    1.    For i = 1 To UBound(tab, 1)
                  For J = i + 1 To UBound(tab, 1)
                      If tab(i) > tab(J) Then
                          St = tab(i)
                          tab(i) = tab(J)
                          tab(J) = St
                      End If
                  Next
              Next


      cette partie est un code qui me permet de trier mes données dans un ordre croissant

      mais si tu fais un essai, par exemple, tu rentre que des "1", le résultat est de 101 :S
      1. Oupsss ...

        Pas besoin de tri dans ton cas :

        Dim iCpt1 As Integer
        Dim iCpt2 As Integer
        
        Dim iVal As Integer
        Dim iNbOld As Integer
        Dim iNbNew As Integer
        
        Dim aTab
        
        iCpt1 = 0
        iCpt2 = 0
        
        iNbNew = 0
        iNbOld = 0
        
        aTab = Array(1, 2, 2, 7, 7, 7, 8, 9, 9)
        
        For iCpt1 = 0 To UBound(aTab)
            For iCpt2 = 0 To UBound(aTab)
                
                If aTab(iCpt1) = aTab(iCpt2) Then
                    iNbNew = iNbNew + 1
                    
                End If
            
            Next iCpt2
            
            If iNbNew > iNbOld Then
                iNbOld = iNbNew
                iVal = aTab(iCpt1)
            End If
            
            iNbNew = 0
        
        Next iCpt1
        
        MsgBox "And the winner issss ... le " & iVal & " compté " & iNbOld & " fois."
        


        Tu peux aussi essayer en utilisant d'autres types de boucles : While, Until, Loop ...
      2. @ShaBooça c'est chouette merci
        j'aurai vraiment continuer à avoir du mal sinon

        je vous remercie tous les deux et particulièrement ShaBoo pour son sens de l'aide et de la passion

        bonne soirée
      3. @VincentGTu pourras raconter une histoire de Loop à ta fille ... ;p

        NeNuit
    2. Const N = 10
          Dim tab(N) As Integer
          Dim i As Integer
          Dim X As Integer
          Dim J As Integer
          Dim St As Integer
      
      
          Sub Main()
      
              For i = 1 To N
                  tab(i) = InputBox("Nombre ?")
              Next
              For i = 1 To UBound(tab, 1)
                  For J = i + 1 To UBound(tab, 1)
                      If tab(i) > tab(J) Then
                          St = tab(i)
                          tab(i) = tab(J)
                          tab(J) = St
                      End If
                  Next
              Next
      
              X = 0
      
              For i = 0 To N
                  For J = 0 To N
                      If tab(i) = tab(J) Then
                          X = X + 1
      
                      End If
                  Next
              Next
              MsgBox(X)
      
          End Sub
      


      c'est peut etre plus clair comme ça
      1. Je ne comprend pas cette partie :
                For i = 1 To UBound(tab, 1)
                    For J = i + 1 To UBound(tab, 1)
                        If tab(i) > tab(J) Then
                            St = tab(i)
                            tab(i) = tab(J)
                            tab(J) = St
                        End If
                    Next
                Next
        


        Par contre je suis d'accord avec celle ci :

                X = 0
        
                For i = 0 To N
                    For J = 0 To N
                        If tab(i) = tab(J) Then
                            X = X + 1
        
                        End If
                    Next
                Next
        


        Et ton msgbox affiche le nombre de fois ou tt tes chiffres on été egaux ...
    3. j'ai pourtant bien essayé de suivre ce que tu m'as dis entre 2 réveils de ma fille :) mais les résultats que j'ai sont incorrects.
      voici le programme
      Const N = 10
      Dim tab(N) As Integer
      Dim i As Integer
      Dim X As Integer
      Dim J As Integer
      Dim St As Integer

      Sub Main()

      For i = 1 To N
      tab(i) = InputBox("Nombre ?")
      Next
      For i = 1 To UBound(tab, 1)
      For J = i + 1 To UBound(tab, 1)
      If tab(i) > tab(J) Then
      St = tab(i)
      tab(i) = tab(J)
      tab(J) = St
      End If
      Next
      Next

      X = 0

      For i = 0 To N
      For J = 0 To N
      If tab(i) = tab(J) Then
      X = X + 1

      End If
      Next
      Next
      MsgBox(X)

      End Sub
      1. ton lien m' ammene en bas de page :(
        1. lol ...

          Il faut utiliser 2 boucles :

          Pour i = 0 jusqu'a Indice max du tableau contenant les valeurs
          
             Pour j = 0 jusqu'a Indice max du tableau contenant les valeurs
          
                  Si valeur de tableau(i) = valeur de tableau(j)
           
                  Fin si
          
             Fin Pour
          
          Fin Pour


          Yaka maintenant ;p
      2. Sérieux, j'ai du mal.
        en langage progress, j'y arrive mieux... mais là
        je m'accroche quand meme mais je bloque à "Tu lis ta premiere occurence et tu la compare aux autres" (au début quoi lol) en effet, j'ai du mal à voir comment comparer la 1ere aux autres car "les autres" ne sont pas encore saisies

        je ne sais pas si j'ai réussi à m'expliquer...
        1. Merci !

          hum hum,
          Je vais essayer comme tu m'as dis
          réponse dans quelques temps
          1. Bonsoir,

            Tu lis ta premiere occurence et tu la compare aux autres. Tu comptes le nbre de fois ou c'est égale.

            Tu passes à la seconde occurence tu la compares (tu evites de la comparer à ellle meme bien sur ;p) tu comptes le nbre de fois.

            En utilsant deux variable (dernier comptage - nouveau comptage) tu les compares pour savoir si l'une est superieur à l'autre ...

            Tu fais ceci jusqu'à la dernière occurence ...