Aide en VB

Fermé
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007 - 6 nov. 2007 à 22:31
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 - 8 nov. 2007 à 23:30
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
A voir également:
  • Aide en VB
  • Vb - Télécharger - Langages
  • Vb cable - Télécharger - Audio & Musique
  • Vb download - Télécharger - Langages
  • Vb runtime - Télécharger - Divers Utilitaires
  • Vb 2008 - Télécharger - Langages

11 réponses

abdel2007 Messages postés 34 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 18 avril 2009 3
8 nov. 2007 à 22:58
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
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
6 nov. 2007 à 22:50
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 ...
0
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
6 nov. 2007 à 22:54
Merci !

hum hum,
Je vais essayer comme tu m'as dis
réponse dans quelques temps
0
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
6 nov. 2007 à 23:16
Je vais me coucher,
je verrai ça demain
merci quand meme
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
6 nov. 2007 à 23:39
NeNuit ;p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
8 nov. 2007 à 20:38
Bon bah j'ai pas réussi,
si quelqu'un pouvais me dire au moins quelle fonction utiliser ?
merci
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
8 nov. 2007 à 20:47
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
8 nov. 2007 à 20:41
salut,

Shaboo t'as donné la fonction à utiliser.

;o)

polux
0
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
8 nov. 2007 à 21:07
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...
0
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
8 nov. 2007 à 21:08
ton lien m' ammene en bas de page :(
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
8 nov. 2007 à 21:21
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
0
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
8 nov. 2007 à 22:16
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
0
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
8 nov. 2007 à 22:18
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
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
8 nov. 2007 à 22:34
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 ...
0
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
8 nov. 2007 à 22:38
   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
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
8 nov. 2007 à 23:11
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 ...
0
VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007 > ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009
8 nov. 2007 à 23:26
ç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
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50 > VincentG Messages postés 49 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
8 nov. 2007 à 23:30
Tu pourras raconter une histoire de Loop à ta fille ... ;p

NeNuit
0