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 :

Recherche Idee/Suggestion sur Algo


Sujet :

VB.NET

  1. #1
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut Recherche Idee/Suggestion sur Algo
    Salut All,

    Je flanche sur le moyen (efficace) de realiser un petit algo dont voici son expose.
    (Je simplifie au maximum sur l'essentiel)
    • J'ai dix cases numerotees (1 à 10) avec un chiffre dans chacun.
    • Le chiffre peut etre identique ou non à une autre case.
    • Il peut y avoir plusieurs possibilites de chiffres identiques mais differents dans la valeur.
    Alors avec cela, je dois realiser un algo qui me permette de savoir quelles cases ont des chiffres identiques ... et je vois pas pour une bonne solution efficace et optimise.

    Merci pour votre aide.
    Thx Danyel.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  2. #2
    Membre régulier Avatar de grrrkewel
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Salut Danyel,

    Tu as cherché du côté des différents algos de tri (tri à bulle, récursif, etc...)???
    Ca te permettrai de trouver les valeurs égales rapidement je pense.


    Il peut y avoir plusieurs possibilites de chiffres identiques mais differents dans la valeur.
    Cette condition n'est pas très claire je trouve, ou c'est moi qui suis idiot...

    Aller, bon courage.
    Si ma réponse est erronée, ignorez là, mais au moins j'aurais essayé
    Il n'y a pas de mauvaise question, si quelqu'un se la pose, ça ne doit pas être le seul

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    hmm je suis pas sur mais si je me souviens bien de mes cours d'algo je dirais:

    tu fais une liste, tu retire le 1er élément dont tu conserves la valeur, tu compare les autres et si c'est la même tu les retires aussi jusqu'à ce que ta liste soit vide. Après je sais pas ce que tu veux faire, si c'est juste le numéro de la case tu fais une liste de structure avec dedans la valeur et la position. Non?

  4. #4
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Citation Envoyé par grrrkewel Voir le message
    Tu as cherché du côté des différents algos de tri (tri à bulle, récursif, etc...)???
    Ca te permettrai de trouver les valeurs égales rapidement je pense.
    Effectuer le tri n'est pas reellement le probleme, c'est plutot qu'il faut que je retrouve l'emplacement de la case qui le contient.

    Citation Envoyé par grrrkewel Voir le message
    Il peut y avoir plusieurs possibilites de chiffres identiques mais differents dans la valeur.
    Cette condition n'est pas très claire je trouve, ou c'est moi qui suis idiot...
    Et bien par exemple, il peut y a voir 1 serie du chiffre '10' et une autre serie d'un autre chiffre '15' par exemple
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  5. #5
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Citation Envoyé par Elstak Voir le message
    si c'est juste le numéro de la case tu fais une liste de structure avec dedans la valeur et la position.
    Qu'entends tu par liste de structure ?
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  6. #6
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Par exemple un tableau Nombre(x,y), x étant l'indice de ton nombre, y valant 0 ou 1, 0 pour la valeur du nombre, 1 sa position dans ta liste.

    Tu tries ton tableau Nombre par ordre croissant, tu n'as plus ensuite qu'à lire le tableau de son premier à son dernier indice et voir si tu as des nombres égaux, combien sont égaux et quelle est leur position.

    Mais bon, les jours finissant en "i", je peux dire des co....ies
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  7. #7
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    C'est effectivement une possibilite, mais apres qq recherches, il semblerait que faire un tri sur un tableau à multi-dimensions soit une vraie galere (cf : tomlev)

    N'hésitez pas à appronfondir ou signaler d'autres solutions
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  8. #8
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Tu n'as pas besoin du nombre d'occurrence, tu veux juste l'information "présent plus d'une fois" ?
    Tu n'as pas besoin de retenir les valeurs, tu veux juste les positions ?
    (je n'ai pas d'idée a priori, c'est pour faire avancer la réflexion )

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Points : 110
    Points
    110
    Par défaut
    Bonsoir,

    Je ne vois pas réellement où est le problème :

    Code algo : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    i = 0
    TANT QUE i < 10
        j = i + 1
        TANT QUE j < 10
              SI case[i] = case[j]
                   STOCKAGE(i, j, case[i])
              FIN SI
              j = j +1
         FIN TANT QUE
         i = i + 1
    FIN TANT QUE

    Ne fait-il pas simplement l'affaire ?

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Citation Envoyé par Danyel Voir le message
    C'est effectivement une possibilite, mais apres qq recherches, il semblerait que faire un tri sur un tableau à multi-dimensions soit une vraie galere (cf : tomlev)
    Mais là il ne s'agit que de trier le tableau en utilisant uniquement le Nombre(x,0) pour reprendre mon exemple donc je ne vois pas trop où est le problème.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Points : 110
    Points
    110
    Par défaut
    Plusieurs dimensions ? Faudra m'expliquer là...

  12. #12
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Tu n'as pas besoin du nombre d'occurrence, tu veux juste l'information "présent plus d'une fois" ?
    Non.
    Citation Envoyé par Skalp Voir le message
    Tu n'as pas besoin de retenir les valeurs, tu veux juste les positions ?
    Exact.
    Avoir le/les valeurs pourrait etre un plus, mais restons sur l'essentiel pour l'instant

    Citation Envoyé par Tusbar Voir le message
    Code algo :
    i = 0
    TANT QUE i < 10
    j = i + 1
    TANT QUE j < 10
    SI case[i] = case[j]
    STOCKAGE(i, j, case[i])
    FIN SI
    j = j +1
    FIN TANT QUE
    i = i + 1
    FIN TANT QUE


    Ne fait-il pas simplement l'affaire ?
    Je vais voir et faire des tests en conditions reelles.

    Citation Envoyé par OhMonBato Voir le message
    Mais là il ne s'agit que de trier le tableau en utilisant uniquement le Nombre(x,0) pour reprendre mon exemple donc je ne vois pas trop où est le problème.
    J'ai fait des recherches et c'est le resultat qui en resulte
    ... je recherche le post en question ...
    http://www.developpez.net/forums/d53...au-dimensions/
    Et la methode de Tomlev me laisse sans voix

    Citation Envoyé par Tusbar Voir le message
    Plusieurs dimensions ? Faudra m'expliquer là...
    Tableau1(x) = Simple Dimension
    Tableau2(x,y,z) = Multi Dimension


    Je continue a chercher et je pars essayer le code de Tusbar sur le champs.
    Merci à tous pour votre aide.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  13. #13
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    A l'ancienne (style VB6, on se refait pas, et j'ignore si il y a des méthodes de tri plus efficaces en Net) :

    Il te faut juste un bouton et 2 controles text dont tu mettras la propriété Multiline à True.

    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
    31
    32
    33
    34
    35
    36
    PublicClass Form1
    Private Nbre(20, 1) AsInteger
    PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'Création d'un tableau contenant 20 nombres entiers
    Dim i AsInteger
    Dim j AsInteger
    For i = 1 To 20
    Nbre(i, 0) = CInt(Int(21) * Rnd()) 'Le nombre
    Nbre(i, 1) = i 'Sa place
    Next
    'Affichage des données brutes dans un textbox
    TextBox1.Clear()
    For i = 1 To 20
    TextBox1.Text = TextBox1.Text & Nbre(i, 0) & vbCrLf
    Next
    'Tri du tableau pour mettre les nombres en ordre croissant
    For i = 1 To 19
    For j = i + 1 To 20
    If Nbre(j, 0) < Nbre(i, 0) Then
    Nbre(0, 0) = Nbre(i, 0)
    Nbre(0, 1) = Nbre(i, 1)
    Nbre(i, 0) = Nbre(j, 0)
    Nbre(i, 1) = Nbre(j, 1)
    Nbre(j, 0) = Nbre(0, 0)
    Nbre(j, 1) = Nbre(0, 1)
    EndIf
    Next
    Next
    'Affichage des données triées dans un textbox
    TextBox2.Clear()
    For i = 1 To 20
    TextBox2.Text = TextBox2.Text & Nbre(i, 0) & Chr(9) & Nbre(i, 1) & vbCrLf
    Next
    EndSub
    EndClass
    Une fois le tableau trié, je pense que le lire et voir combien de nombres égaux sont dans la liste ne représente pas trop de difficultés.
    Evidemment s'il y a beaucoup de nombres à trier, faut voir le temps que ça prend.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  14. #14
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu veux une belle solution ?

    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
    31
    32
    33
     
    class CaseValeur
        {
            public int Numero { get; set; }
            public int Valeur { get; set; }
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                List<CaseValeur> casesValeurs = new List<CaseValeur>
                {
                    new CaseValeur { Numero = 1, Valeur = 1 },
                    new CaseValeur { Numero = 2, Valeur = 4 },
                    new CaseValeur { Numero = 3, Valeur = 6 },
                    new CaseValeur { Numero = 4, Valeur = 7 },
                    new CaseValeur { Numero = 5, Valeur = 3 },
                    new CaseValeur { Numero = 6, Valeur = 3 },
                    new CaseValeur { Numero = 7, Valeur = 1 },
                    new CaseValeur { Numero = 8, Valeur = 9 },
                    new CaseValeur { Numero = 9, Valeur = 9 },
                    new CaseValeur { Numero = 10, Valeur = 0 }
                };
     
                var counts = (from c in casesValeurs
                              group c by c.Valeur into groups
                              where groups.Count() > 1
                              select groups).Count();
     
                Console.WriteLine(counts);
            }
        }
    EDIT : La solution proposée renvoie le nombre de groupes de valeurs (un groupe de valeurs est une valeur qui apparaît plusieurs fois).
    En supprimant le dernier Count() tu récupères les cases groupées par valeurs quand la valeur apparaît plus d'une fois dans les cases.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Qu'entends tu par liste de structure ?
    Voilà, je pensais à quelque chose qui ressemble à ce que propose saumon. Tu utilise son type Casevaleur qui a le numero et la valeur !

    bon apres son traitement j'ai pas tout suivi comment que ca marche ce truc, mais bon

  16. #16
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Un grand merci à tous pour votre implication.
    Je vais encore tester et tester

    Merci aussi saumon pour ta belle solution, mais elle est pas en vb
    Certes elle parait la plus optimisee, mais je saurais pas correctement la convertir.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

Discussions similaires

  1. idée sur algo d'un script
    Par nina2007 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 01/09/2010, 11h30
  2. Idée/suggestion évolution sur API
    Par Unusual dans le forum IGN API Géoportail
    Réponses: 23
    Dernier message: 04/09/2009, 16h02
  3. Réponses: 4
    Dernier message: 13/07/2009, 15h37
  4. Recherche Livre / Conseils sur la conception de Base
    Par Yeuma dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 02/01/2004, 14h25
  5. Réponses: 2
    Dernier message: 19/08/2003, 18h04

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