Nombres d'occurences

minimoix Messages postés 6 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 28 mai 2016 - Modifié par BunoCS le 11/05/2016 à 16:13
Whismeril Messages postés 19036 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 - 11 mai 2016 à 16:18
bonjour,
j'ai un devoir a rendre, mais je suis bloqué sur un exercice et j'aurai besoin de votre aide !
voici l'énoncé:
écrivez un programme qui:
-demande a l'utilisateur de combien de valeurs (de type entier) il veut saisir
-saisit ces valeurs en les stockant dans un tableau
-recherche et affiche le nombre d'occurrences des valeurs maximales et minimales du tableau
par ex si l'utilisateur saisit les valeurs suivantes:
3 9 5 3 4 6 9 3 7 3
le programme affichera:
le minimum est 3 (4 occurrences), et le maximum est 9 (2 occurrences)

j'ai deja fais tout le programme je bloque juste sur le nombre d'occurrences, je sais que je dois faire une boucle et non pas une fonction pour trouver celle ci voici le code de mon programme:

Module Module1
    Function minimumtab(ByVal tab() As Integer, ByVal nombres As Integer) As Integer
        Dim minimum = tab(0), i As Integer
        For i = 1 To nombres - 1
            If tab(i) < minimum Then minimum = tab(i)
        Next
        minimumtab = minimum

    End Function

    Function maximumtab(ByVal tab() As Integer, ByVal nombres As Integer) As Integer
        Dim maximum = tab(0), i As Integer
        For i = 1 To nombres - 1
            If tab(i) > maximum Then maximum = tab(i)
        Next
        maximumtab = maximum
    End Function

    Sub Main()
        Dim tab(20), nbvaleurs, i As Integer
        nbvaleurs = InputBox("saisissez le nombres de valeurs à traiter(< 20):")
        For i = 0 To nbvaleurs - 1
            tab(i) = InputBox("saisissez la valeur n°" & i)
            Console.WriteLine(tab(i))
        Next
        Console.WriteLine("le minimum est :" & minimumtab(tab, nbvaleurs))
        Console.WriteLine("le maximum est :" & maximumtab(tab, nbvaleurs))
        Console.Read()
    End Sub



jattends vos reponses avec impatience !!!! merci beaucoup

End Module

4 réponses

vb95 Messages postés 3473 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 30 avril 2024 169
Modifié par vb95 le 10/05/2016 à 18:08
Bonjour
Quel VB utilises-tu ?

Qu'attends-tu pour la faire cette boucle
Au début le compteur d’occurrence est à 0
Tu parcours tout ton tableau dans une boucle For
Dans la boucle tu testes si la valeur du tableau est égale à la minimale ou maximale selon le cas
si oui tu augmentes le compteur d'occurrence de 1
en fin de boucle tu as le nombre d'occurrence

Et en étant malin tu peux faire les 2 occurrences dans la même boucle avec deux compteurs distincts

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
0
minimoix Messages postés 6 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 28 mai 2016
Modifié par minimoix le 11/05/2016 à 12:42
re , deja merci de m'avoir repondu ! j'utilise visual basic 2008.
j'ai suivi ton raisonnement du moins j'ai essayé, voila ce que ca donne: ( mais il me dit que pour 0 : erreur de syntaxe je comprends pas trop )
code#
for  occmini = 0
If tab(i) = minimumtab(tab, nbvaleurs) Then
occmini = occmini + 1

End If
Next
for occmaxi = 0
If tab(i) = maximumtab(tab, nbvaleurs) Then
occmaxi = occmaxi + 1

End If
Next


Console.WriteLine("le minimum est :" & minimumtab(tab, nbvaleurs) & " , " & occmini & "occurrences")
Console.WriteLine("le maximum est :" & maximumtab(tab, nbvaleurs) & " , " & occmaxi & "occurrences")
Console.Read()
End Sub


et si je fais dans la meme boucle le probleme est le meme

 for  occmini  = 0 and occmaxi  = 0 
If tab(i) = minimumtab(tab, nbvaleurs) Then
occmini = occmini + 1
ElseIf tab(i) = maximumtab(tab, nbvaleurs) Then
occmaxi = occmaxi + 1
End If
Next
0
minimoix Messages postés 6 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 28 mai 2016
Modifié par minimoix le 11/05/2016 à 12:58
c bon je crois que j 'ai trouvé!!!

occmini = 0 And occmaxi = 0
For i = 0 To tab.Length - 1
If tab(i) = minimumtab(tab, nbvaleurs) Then
occmini = occmini + 1
ElseIf tab(i) = maximumtab(tab, nbvaleurs) Then
occmaxi = occmaxi + 1
End If
Next
<code>
</code>

ca a l'air de marcher !!
0
vb95 Messages postés 3473 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 30 avril 2024 169
11 mai 2016 à 15:22
Comme ceci cela marchera beaucoup mieux

Dim occmini as Integer= 0
Dim occmaxi as Integer= 0
For i = 0 To tab.Length - 1
If tab(i) = minimumtab(tab, nbvaleurs) Then occmini = occmini + 1
If tab(i) = maximumtab(tab, nbvaleurs) Then occmaxi = occmaxi +1
Next
Console.WriteLine("le minimum est :" & minimumtab(tab, nbvaleurs) & " , " & occmini.ToString & "occurrences")
Console.WriteLine("le maximum est :" & maximumtab(tab, nbvaleurs) & " , " & occmaxi.Tostring & "occurrences")
Console.Read()


rajoute dans les propriètés de ton projet Option Strict sur On et Option Explicit sur On et corrige les erreurs ! Cela t'oblige à déclarer toutes les variables et de convertir obligatoirement les différentes variables
0
Whismeril Messages postés 19036 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 656
11 mai 2016 à 16:18
Bonjour,

à la place d'une boucle for, tu peux aussi utiliser une boucle for each
https://msdn.microsoft.com/fr-fr/library/5ebk1751.aspx
0
Rejoignez-nous