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. 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 ...
      1. Merci !

        hum hum,
        Je vais essayer comme tu m'as dis
        réponse dans quelques temps
        1. 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. 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. 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. 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 ...
            2.    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