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 fusionnant 2 listes distinctes


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 112
    Par défaut Algorithme fusionnant 2 listes distinctes
    bonjour,
    j'aimerais savoir si mon algo est correct SVP et j'ai qq questions.
    j'ai donc 2 listes d'entiers liste1 et liste2 et je veux les fusionner dans une liste appelée liste3

    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
    nom: fusion
    rôle: fusionner deux listes l'une après l'autre
    entrée: liste1: liste d'entiers //1ere liste qu'on va fusionner//
    		invliste1: liste d'entiers //on inverse l'ordre de la liste1//
    		liste 2: liste d'entiers //2nde liste qu'on va fusionner //
    sortie  liste3: liste d'entiers // liste résultant de la fusion //
     
    début
    	tant que vide(liste1)=faux faire //boucle qui inverse liste1//
    		invliste1 := concat (premier(liste1),invliste1);
    		liste1:=reste(liste1);
    	finTQ
     
    	tant que vide(invliste1) = faux faire //boucle qui crée liste3//
    		liste3:=concat (premier(invliste1),liste2);
    		invliste1:=reste(invliste1);
    	finTQ
     
    fin
    petite question: quand on déclare les listes, certaines sont vides comme liste3 et d'autres pleines comme liste1 et liste2 ce n'est pas gênant de ne pas savoir si une liste est vide ou pleine?

    autre question: le prof nous a dit qu'il existe une méthode pour faire algo avec 2 boucles mais sans inverser au départ l'ordre de la liste1 , je ne vois absolument pas , vous auriez des pistes?

    merci

  2. #2
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Bonjour,
    la ligne 15 liste3:=concat (premier(invliste1),liste2); est problématique. Je te propose de tracer ton algorithme avec des petites listes pour comprendre pourquoi. Suggestion : [1;2;3] et [11;12;13].

    Edit :
    • Si cela peut être gênant de ne pas savoir si une liste est vide ou pleine. Dans ces cas là, il est possible et nécessaire de tester la liste Si vide(liste) Alors ....
    • Je te propose de répondre à ta question une fois que tu aura un premier algo qui fonctionne


    Cdlt,

  3. #3
    Membre confirmé
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 112
    Par défaut
    bonjour
    je ne vois pas d'erreur avec la ligne 15

    si liste1 =(1 2 3) et liste2 =(4 5 6)
    la premiere boucle tant que crée invliste1 =(3, 2,1)
    puis deuxieme boucle tant que
    liste3= (3 4 5 6)
    invliste1 se transforme en (2 1) avec fonction rest
    liste2 = (2 3 4 5 6) etc ....

    merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 112
    Par défaut
    rectificatif
    Citation Envoyé par mathier Voir le message
    bonjour
    je ne vois pas d'erreur avec la ligne 15

    si liste1 =(1 2 3) et liste2 =(4 5 6)
    la premiere boucle tant que crée invliste1 =(3, 2,1)
    puis deuxieme boucle tant que
    liste3= (3 4 5 6)
    invliste1 se transforme en (2 1) avec fonction rest
    liste3 = (2 3 4 5 6) etc ....

    merci

  5. #5
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Pas d'accord.

    • Boucle 2, avant la première itération :
      • invliste1 = (3 2 1)
      • list2 = (11 12 13)
      • list3 = ()


    • Première itération
      • invliste1 = (2 1)
      • list2 = (11 12 13)
      • list3 = (3 11 12 13)

    • Seconde itération
      • invliste1 = (1)
      • list2 = (11 12 13)
      • list3 = (2 11 12 13)

    • Troisième et dernière itération
      • invliste1 = ()
      • list2 = (11 12 13)
      • list3 = (1 11 12 13)


    Mais pourquoi donc ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 112
    Par défaut
    ah oui merci
    je pense avoir trouvé

    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
    nom: fusion
    rôle: fusionner deux listes l'une après l'autre
    entrée: liste1: liste d'entiers //1ere liste qu'on va fusionner//
    		invliste1: liste d'entiers //on inverse l'ordre de la liste1//
    		liste 2: liste d'entiers //2nde liste qu'on va fusionner //
    sortie  liste3: liste d'entiers // liste résultant de la fusion //
     
    début
    	tant que vide(liste1)=faux faire //boucle qui inverse liste1//
    		invliste1 := concat (premier(liste1),invliste1);
    		liste1:=reste(liste1);
    	finTQ
     
    liste3:=liste2; // initialisation de liste3 avec liste2//
    	tant que vide(invliste1) = faux faire //boucle qui crée liste3//
    		liste3:=concat (premier(invliste1),liste3);
    		invliste1:=reste(invliste1);
    	finTQ

  7. #7
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Citation Envoyé par mathier Voir le message
    ah oui merci
    je pense avoir trouvé
    Ça m'a l'air tout bon !

    Citation Envoyé par mathier Voir le message
    le prof nous a dit qu'il existe une méthode pour faire algo avec 2 boucles mais sans inverser au départ l'ordre de la liste1 , je ne vois absolument pas , vous auriez des pistes?
    Je t'avoue ne pas trop savoir, à moins de faire de manière récursive ... As-tu déjà travaillé sur la récursivité ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 112
    Par défaut
    super merci pour l'aide
    pour la recursivité j'ai pas fait ... je vais laisser tomber la 2eme méthode j'ai encore des tas d'autres exos classiques à bosser

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

Discussions similaires

  1. [Toutes versions] fusionner des listes de validation
    Par Cantalou dans le forum Excel
    Réponses: 0
    Dernier message: 21/06/2011, 12h18
  2. Algorithme dijkstra avec listes
    Par x-epsilon dans le forum C
    Réponses: 0
    Dernier message: 11/02/2010, 12h59
  3. Fusionner 2 listes sans répétition
    Par jaljal dans le forum Général Java
    Réponses: 5
    Dernier message: 24/11/2009, 16h20
  4. Recherche d'algorithme sur les listes
    Par shaku dans le forum Scheme
    Réponses: 3
    Dernier message: 22/01/2009, 03h16
  5. Liste DISTINCT sur plusieur table
    Par Nako_lito dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/06/2008, 08h49

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