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

Algorithmes et structures de données Discussion :

algorithme trouver un doublon


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut algorithme trouver un doublon
    Bonsoir, j'essaye de trouver un algorithme qui cherche les doublons, mon but serait de récolter les tirages au sort d'un nombre quelconque, si le nombre est identiques, je doits me débrouiller de chercher s'il y a un double, s'il y en je ne retiens pas ce nombre, et je recommence les tirages, jusqu'a ce que j'ai un tableau a 10 éléments.

    voici ce que j'ai pensé faire:
    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
     
    constantes max = 10
    i <--   1
    j <--  1
    sort : tableau [1 .... max] de entier
     
    tant que (i <= max)
      Affiche ("quel est le nombre qui est tirer au sort ?")
      Lire("num")
      sort[i] <-- num 
      tempo <-- sort[i]  //on met le résultat pour le comparer a toutes les  éléments du tableau
      idem <-- 0   // initialise idem a 0 qui sert a vérifier s'il y a un double
        Pour i à j avec un pas de 1 faire
         Si sort[i} = tempo  //tempo pour variable temporaire
           alors: idem <-- idem + 1  
     
         Si idem = 2
          alors: i <-- i-1  // si idem est égal a 2 alors on a un double, on n'ajoute pas cette dnnée dans le tableau et on écrase par le prochain tirage.
        FinSi
     
        Si idem  = 1
            j<-- j+1
            i<-- i + 1
        FiSi
    FinTanque

    Pouvez vous me dire si cette algorithme est correct, si mon cheminement pour avoir le tableau a 10 éléments tient la route ?

    je vous remercie d'avance de vos aides

  2. #2
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    mon but serait de
    de récolter les tirages au sort d'un nombre quelconque, si le nombre est identiques, je doits me débrouiller de chercher s'il y a un double, s'il y en je ne retiens pas ce nombre, et je recommence les tirages, jusqu'a ce que j'ai un tableau a 10 éléments.
    ça donne quoi en français? j'ai rien pigé au problème.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    je vais essayer de donner un exemple. je ne sais pas comment m'y prendre pour expliquer simplement le problème

    je tire au sort le nombre 5
    je le met ce nombre 5 dans un tableau (tab[1]= 5])
    je mémorise ce nombre et je le compare a l'ensemble du tableau
    comme au début il n'y a qu'un nombre dans le tableau on a tab[1] = 5
    idem sera égale à 1 donc pas de doublon donc on avance de 1 avec le i
    (si idem = 2 alors on aura 2 fois le même nombre dans ce tableau )


    je tire au sort le nombre 16
    je le met ce nombre 16 dans ce tableau
    je mémorise ce nombre et je le compare a l'ensemble du tableau
    tab|1] = 5 ?
    tab[2] = 16 ?

    je cherche si le nombre 16 est s'il est identique a ces 2 éléments
    tab1[1] = 5 il n'est pas identique
    tab[2] =16 il est identique , c'est normal c'est celui qu'on vient de mémorise"r

    je cherche le nombre 5
    je met ce nombre dans ce tableau
    je mémorise ce nombre et je comare à l'ensemble du tableau
    tab[1] =5 ?
    tab[2] =16 ?
    tab[3]= 5 ?


    ici j'ai 2 fois l'élément 5 dans tab[1] et dans tab [3]
    donc je ne retitent pas tab[3] , je recommence un autre tirage jusqu'a ce que
    tab[3] différent de tab[2] différent tab[1]

    on répète jusqu'a ce que on obtient un tableau de 10 éléments


    donc en gros il faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    tab[1] j = 1  // 1 seul nombre a comparer
    tab[2] différent de tab[1]           // j= 1 + 1 = 2 car il y a 2 élément dans le tableau
    tab[3] différent de tab[1], et [tab2]  // j= 2 +1 = 3 car il y a 3 élémetns dans le tableau
    tab[4] différent de tab[1], et tab[2], ,et tab[3] etc .....
    tab[5] différent de tab[1], et tab[2], ,et tab[3], ,et tab[4]
    tab[6]  différent de tab[1], et tab[2], ,et tab[3], ,et tab[4],et tab[5]
    tab[7] différent de tab[1], et tab[2], ,et tab[3], ,et tab[4] ,et tab[6]
    tab[8] différent de tab[1], et tab[2], ,et tab[3], ,et tab[4].... ,et tab[7]
    tab[9  différent de tab[1], et tab[2], ,et tab[3], ,et tab[4],.....et tab[8]]
    tab[10] différent de tab[1], et tab[2], ,et tab[3], ,et tab[4] ,.....et tab[9] //

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    j'ai essayer de trouver un autre algorithme plus simiple le voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Tanque (i  < 10 )
    	Afficher («*le tiarage»)
    	lire («*numero*»)
    	tab[i] = numero
    		Si (i >= 2)
    			pour j allant de 1 à (i -1) avec un pas de 1
    			Si tab[i] = numero
    			Afficher(«recommencer le tirage, un résultat est identique»)
    		Sinon 
    			tab[i] = numéro
    			i<- i+ 1
    	FinSi
    est ce que c'est plus lisible .

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 99
    Points
    99
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Soient tab, n <- 10, i <- 0
     
    Tant que (i < n)
    	x <- tirage()
    	b <- vrai
    	j <- 0
    	Tant que (j < i)
    		Si tab[j] == x
    			b <- faux
    		j <- j + 1
    	Si b = vrai
    		tab[i] <- x
    		i <- i + 1
    Que penses-tu de ça ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    je te remercie de ta réponse, c'est bien ce que je voulais faire.
    ce qui est dur c'est d'avoir trouver la solution pour comparer toute les valeurs qu'on a donné a celle qul'on viens d'avoir.

    grâce a
    tu comparte toutes les valeurs du tableau sauf celui qu'on vient sortir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trouver des doublons de groupe de valeurs
    Par Grodard dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2009, 20h04
  2. trouver un doublon dans une chaine
    Par ctrl+z dans le forum Langage
    Réponses: 7
    Dernier message: 20/08/2008, 15h03
  3. [sqlserver] trouver les doublons
    Par graphicsxp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/11/2007, 12h06
  4. Réponses: 6
    Dernier message: 21/09/2007, 14h18
  5. Trouver les doublons
    Par wanou44 dans le forum ASP
    Réponses: 20
    Dernier message: 28/04/2006, 14h21

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