Nombres d'occurences

minimoix 6 Messages postés mardi 10 mai 2016Date d'inscription 28 mai 2016 Dernière intervention - 10 mai 2016 à 12:46 - Dernière réponse : Whismeril 11785 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 juillet 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

vb95 1602 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 13 juillet 2018 Dernière intervention - Modifié par vb95 le 10/05/2016 à 18:08
0
Merci
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. 
Commenter la réponse de vb95
minimoix 6 Messages postés mardi 10 mai 2016Date d'inscription 28 mai 2016 Dernière intervention - Modifié par minimoix le 11/05/2016 à 12:42
0
Merci
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
Commenter la réponse de minimoix
minimoix 6 Messages postés mardi 10 mai 2016Date d'inscription 28 mai 2016 Dernière intervention - Modifié par minimoix le 11/05/2016 à 12:58
0
Merci
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 !!
vb95 1602 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 13 juillet 2018 Dernière intervention - 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
Commenter la réponse de minimoix
Whismeril 11785 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 juillet 2018 Dernière intervention - 11 mai 2016 à 16:18
0
Merci
Bonjour,

à la place d'une boucle for, tu peux aussi utiliser une boucle for each
https://msdn.microsoft.com/fr-fr/library/5ebk1751.aspx
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.