Visual Basic

Bonjour,

alors voilà j'ai un petit problème, je suis débutant en VB et j'ai un sujet à faire, et je ne comprend rien... Je ne demande pas à ce que l'on me le fasse, mais au moins qu'on m'aide dans la démarche

Problème à résoudre :
? Demander à l'utilisateur de saisir un nombre entier N compris entre 100 et 10000.
? Générer par la suite N nombres entiers pseudo-aléatoires compris entre 10 et 20.
? Afficher la liste de nombres générée
? Compter le nombre d'occurrences de chaque nombre de la suite générée et afficher ce nombre
? Trier la liste de nombre en ordre croissant et afficher la liste triée.
? Calculer et afficher la moyenne et l'écart-type des nombres générés
? Sauvegarder dans un fichier texte le nombre de données générées, leur moyenne, leur écart-type, ainsi que les nombres triés.

merci d'avance :)

29 réponses

Résumé de la discussion

La discussion porte sur un exercice VB demandant de saisir N entre 100 et 10000, puis de générer et afficher N nombres entiers pseudo-aléatoires compris entre 10 et 20, avec sauvegarde en fichier. Plusieurs réponses soulignent qu’il faut déclarer correctement N et suivre les étapes: affichage, comptage des occurrences, tri, puis calcul de la moyenne et de l’écart-type. Des conseils portent aussi sur la gestion des tableaux (UBound, ReDim Preserve), le rangement des résultats et les aspects pratiques pour rendre le tout lisible et prêt pour une publication Google.

Bobot (l’IA à votre service)
  1. juste une dernière question, pourquoi avoir généré 30 ?
    0
    1. Contributeur
      Et bien maintenant tu a un modèle pour remplir un tableau avec des nombre aléatoire.
      Un modèle pour trier un tableau.
      A toi de combiner les deux.
      Il me semble que j'ai assez donné sur ce topic qui ne m'inspire pas du tout.
      Il est vrai que tu n'est pas impoli, mais nous somme bénévole et tes réponses ou questions ressemble plutôt à des ordres plutôt qu'a un souhait, même pas un mot de remerciement ou une expression de reconnaissance du service rendu.
      Abandon du suivi.
      A++
      Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      NOTE : Je ne répond pas aux MP pour les questions techniques.
      0
      1. Contributeur
        Tu a besoin du tableau non trier ?
        0
        1. le trie par ordre croissant fonctionne mais du coup maintenant j'ai des chiffres en plus :
          je génère 155 -->

          j'ai et le tri donne

          16 11
          16 11
          16 13
          13 13
          15 13
          17 14
          11 14
          16 15
          13 15
          14 16
          15 16
          15 16
          0
          1. Contributeur
            un essais,
                Private Sub MaListeRND()    
                    Dim i As Integer, B As Boolean, Buff As Integer    
                    Dim TB(30) As Integer    
                    Randomize()    
            'Initialise 31 nombres aléatoires entre 10 et 20  
                    For i = 0 To 30    
                        TB(i) = CInt(Int((20 * Rnd()) + 1)) + 9    
                    Next    
            'Trie le tableau par ordre croissant   
            'La méthode "Sorted" d'une listbox ne fonctionne pas sur des nombres   
            'même si ont les met en String   
                    Do    
                        B = False    
                        For i = 1 To 30    
                            If TB(i) < TB(i - 1) Then    
                                B = True    
                                Buff = TB(i) : TB(i) = TB(i - 1) : TB(i - 1) = Buff 
                            End If    
                        Next    
                    Loop Until Not B    
            'Affiche dans la listeBox   
                    ListBox1.Items.Clear   
                    For i = 0 To 30    
                        ' Add items to the ListBox.    
                        ListBox1.Items.Add(TB(i))    
                    Next    
                    ListBox1.TopIndex = 0    
                End Sub

            Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
            NOTE : Je ne répond pas aux MP pour les questions techniques.
            0
            1. oui c'est ce que je cherche a faire en les triant, mais le problème est que le programme ne les trie pas, il affiche seulement la même des nombres que j'ai généré
              0
              1. Contributeur
                tu voudrais pas plutôt dire les mettre par ordre croissant ?
                0
                1. je ne veux pas générer des nombres entre 1 et 30, je veux générés des nombres pseudo-aléatoires entre 10 et 20.

                  je comprends ce que tu veux dire.... il faut que je change de tableau pour les trier ?
                  0
                  1. Contributeur
                    A mon avis ..........tu veux rire un bon coup !!!!!!!!!!!!!!!!!!!!!!
                    Comment veux-tu avoir des différences ??
                    Si dans letableauinitial tu met des nombres entre 10 et 20
                    ensuite filtre tout les nombres qui sont entre 10 et 20 dans et les mettre dans letableau
                    c'est évident qu'il y seront tous et qu'il n'y aura pas de différence.
                    Vraiment, tu m'épate là.
                    dans letableauinitial met des nombres entre 1 et 30 et tu verra.
                    ou bien filtre entre 3 et 6 par exemple
                    0
                    1. ce sont les chiffres générés compris entre 10 et 20
                      0
                      1. Contributeur
                        y a quoi dans letableauinitial
                        0
                        1. maintenant, ça m'affiche la même liste où j'ai généré les nombres ^^
                          0
                          1. Contributeur
                            Pour ma culture pourrais tu m'expliquer quelques trucs, notamment, à quoi correspond "UBound" et " ReDim Preserve letableau(T) " ?

                            Dans le code tu sélectionne Ubound (double clic dessus) il se met en bleu et tu tape F1.
                            Idem pour tout les mots que tu connais pas.

                            Et remplace la ligne
                            ListBoxsorted.Dispose()

                            par
                            ListBoxsorted.Items.Clear()

                            je me suis trompé.
                            A+
                            Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                            NOTE : Je ne répond pas aux MP pour les questions techniques.
                            0
                            1. "Tu ne devrais pas répondre de cette façon", j'ai l'impression qu'il y de l'énervement alors que je ne suis pas agressif ....

                              j'ai testé ce code, mais j'ai un problème, lorsque je clique sur mon bouton "trier", ma listbox "ListBoxsorted" disparait, du coup impossible de savoir si c'est trier ^^

                              Pour ma culture pourrais tu m'expliquer quelques trucs, notamment, à quoi correspond "UBound" et " ReDim Preserve letableau(T) " ?

                              cdt
                              0
                              1. Contributeur
                                ou est ce que je met une condition qui ne sera jamais vrai ? ^^
                                Tu verras cela à l'usage..et en attendant, d'accord... met des lunettes.
                                Tu ne devrais pas répondre de cette façon alors que tu n'est pas en mesure de tester ton code vu que.. Exit While ÇA N'EXISTE PAS DANS LA SYNTAXE

                                Mais comme je suis pas rancunier, essaye ce code,
                                    Dim letableau() 
                                    Sub Transfert() 
                                        Dim i As Integer, T As Integer = 0 
                                        For i = 0 To UBound(letableauinitial) 
                                            If letableauinitial(i) > 9 And letableauinitial(i) < 21 Then 
                                                ReDim Preserve letableau(T) 
                                                letableau(T) = letableauinitial(i) 
                                                T = T + 1 
                                            End If 
                                        Next 
                                        ListBoxsorted.Dispose()
                                        For i = 0 To UBound(letableau) 
                                            ListBoxsorted.Items.Add(CStr(letableau(i))) 
                                        Next i 
                                    End Sub

                                Toutes les valeurs de letableauinitial qui sont entre 10 et 20 se retrouve dans le tableau letableau
                                et dans la listeBox
                                A+
                                Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                                NOTE : Je ne répond pas aux MP pour les questions techniques.
                                0
                                1. N est un valeur global déclarée au préalable

                                  Alors soit je suis crevé, ou je change de lunette, ou est ce que je met une condition qui ne sera jamais vrai ? ^^

                                  ton idée est la bonne
                                  0
                                  1. Contributeur
                                    Aller, je vais reprendre malgré que j'avais pensé abandonner ce topic.
                                    1°) N n'est pas déclarer et provient d'où ?
                                    2°) Dans une boucle, si tu met une condition et quel ne serra jamais vraie tu bloque ton programme.
                                    3°) Pourquoi transférer le tableau letableauinitial dans le tableau letableau ?
                                    Explique ce que tu veux réaliser avec ce code sans faire référence au code.
                                    J'ai bien une idée mais je ne sais pas si c'est la bonne, dans le tableau letableau tu veux mettre les valeurs comprises entre 10 et 20
                                    Tu dis.

                                    A+
                                    0
                                    1. je cherchais également à trier des nombres avec un bout de programme que j'avais déja fait :
                                      Private Sub dosort() 'trier les nombres
                                      Dim i, j As Integer
                                      Dim nMoins1, valeur As Integer
                                      Buttontrier.Enabled = False
                                      For i = 0 To N - 1
                                      letableau(i) = letableauinitial(i)
                                      Next i
                                      nMoins1 = N - 1
                                      For j = 1 To nMoins1
                                      i = j - 1
                                      valeur = letableau(j)
                                      While (i > 9) And (i < 21) And (valeur < letableau(i))
                                      letableau(i + 1) = letableau(i)
                                      i = i - 1
                                      If (i < 0) Then
                                      Exit While
                                      End If
                                      End While
                                      letableau(i + 1) = valeur

                                      Next j
                                      For i = 0 To N - 1
                                      ListBoxsorted.Items.Add(CStr(letableau(i)))

                                      Next i

                                      Buttontrier.Enabled = False
                                      Buttoneffacer.Enabled = True

                                      sauf que dans mon cas je veux trier seulement des nombres entre 10 et 20, comment dois je faire ?
                                      0
                                      • 1
                                      • 2