IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Nombres d occurrences


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Nombres d occurrences
    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    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
    End Module
    jattends vos reponses avec impatience !!!! merci beaucoup

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,



    Et il est ou le problème donc ?
    Tu as le min et le max, il manque plus qu'a compter le nombre d’occurrence dans ta liste... pas compris le blocage.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut re
    ben justement c le nombres de d occurrences que je veux trouver mais je ne sais pas comment faire !
    j'avais essaye ca mais ca fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Do
                i = minimumtab(tab, nbvaleurs)
                occ = i + 1
     
                Console.WriteLine("le minimum est :" & minimumtab(tab, nbvaleurs))
                Console.WriteLine("le nombre d'occurence est :" & occ)
                Console.Read()
     
    Loop Until i = minimumtab(tab, nbvaleurs)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Un grand principe quand on débute en algorithmie comme toi, c'est de résoudre ton problème sur un papier avec un stylo ( ouai je sais c'est old school !) en détaillant les étapes une à une que tu aurais faites pour répondre à la question ...

    Tu as une liste d'entier, et tu veux le nombre d’occurrence d'un entier donné dans la liste, qu'elle serait l'algo que tu ferais dans ta tête pour répondre à la question ? En gros reprend ton exemple, analyse ce que ton cerveau fais pour trouver le nombre d’occurrence d'une valeur, tu pose tout ça sur une feuille de papier ... tu auras ton algo.

    J@ck.

    PS => <=
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut suite occurrences
    bon alors j 'ai essayé de faire sur papier voila ce que ca donne:
    pour occurrences minimum est egal a zero et occurrences maximum est egal a zero
    si le nombre des valeurs du tableau est egal au plus petit de ces nombres alors
    l'occurrence minimum est egal a l'occurence minimum +1
    sinon si le nombre des valeurs du tableau est egal au plus grand de ces nombres alors
    l'occurrence maximum est egal a l'occurence maximum +1
    voila ma traduction en code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     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
    mais ca me dit erreur de syntaxe pour 0
    je comprend pas trop

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut re
    ca y est je crois que j'ai trouvé! en tout cas ca a l 'air de fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    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
    merci encore pour ton aide!

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    En effet tu avance , et c'est bien plus efficace que si je t'avais donné l'algo tout fait

    Je ne comprends pas cette ligne =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for  occmini = 0 and occmaxi = 0
    De plus, pour optimiser ton algo tu pourrais sauvegarder les valeurs min et max dans une variable et les utiliser pour les tests dans les if. Là, pour le moment tu vas appeler minimumTab et maximumTab autant de fois que tu as d'élément dans le tableau, en sauvegardant dans une variable tu ne les appellera qu'une fois.

    Bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  8. #8
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Bonjour,

    Ton code a l'air fonctionnel, mais il pourrait être optimisé ! En effet, tu as créer une fonction pour chaque "énoncé" du besoin : recherche du min, recherche du max, recherche du nombre de min, recherche du nombre de max. C'est un bon début, mais imagine faire tourner ton code avec un tableau de plusieurs milliers/millions de valeurs. Ça risque d'être long car tu effectues une lecture complète du tableau à chaque fonction.

    Donc si tu as un peu de temps, je te conseille d'essayer de répondre à tous les besoin avec la contrainte suivant : une seule lecture du tableau.

    Bon code

  9. #9
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par J@ckHerror Voir le message
    Je ne comprends pas cette ligne =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for  occmini = 0 and occmaxi = 0
    C'est les instructions d'initialisation, nop ? J'y connais pas grand chose en VB.NET mais en C/C# j'interprèterais ça comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (occmini = 0, occmaxi = 0;;)
    Plus je connais de langages, plus j'aime le C.

  10. #10
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par J@ckHerror Voir le message
    Bonjour,


    Je ne comprends pas cette ligne =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for  occmini = 0 and occmaxi = 0
    Cela n'existe juste pas en VB.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  11. #11
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par minimoix Voir le message
    ca y est je crois que j'ai trouvé! en tout cas ca a l 'air de fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    occmini = 0 And occmaxi = 0
    merci encore pour ton aide!
    Cela, en supposant que VB l'avale, n'est pas l'affectation de la valeur 0 à tes deux variables, mais au mieux, une instruction logique qui retourne TRUE si tes deux variables valent 0 et FALSE, autrement.

    Mais la mon VS est planté et je ne peux pas tester.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/11/2007, 21h06
  2. Réponses: 22
    Dernier message: 15/05/2007, 09h43
  3. Réponses: 2
    Dernier message: 06/05/2007, 23h43
  4. Nombre d'occurrences d'une sous chaîne
    Par yanice dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2007, 16h37
  5. [débutant] Compter le nombre d'occurrence d'un texte
    Par PoichOU dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2006, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo