Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1470 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C]programme affichant la suite d'operation pour trier une liste.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]programme affichant la suite d'operation pour trier une liste.

n°1835228
Darame
Posté le 07-01-2009 à 17:32:59  profilanswer
 

Bonjour,
Je suis actuellement sur un programme dont je n'arrive pas a trouver le bon algorythme, si quelqu'un pourrait me mettre sur quelque piste...
Merci.
 
Description du jeu.  
Le jeu est constitue de 2 listes nomees l_a et l_b. Au depart l_b est vide et l_a contient un certain nombre de nombres positifs ou negatifs (sans doublons) . Le but du jeu est de faire en sorte que l_a contienne les memes nombres mais dans l'ordre croissant.
Pour ce faire on ne dispose que des operations suivantes :
 
      sa swap les 2 premiers elements de l_a (ne fait rien si il n'y en a qu'un ou aucun).
      sb swap les 2 premiers elements de l_b (ne fait rien si il n'y en a qu'un ou aucun).
      ss sa et sb en meme temps
      pa prend le premier element de l_b et le met en premier dans l_a. (si l_b est vide ne fait rien).
      pb prend le premier element de l_a et le met en premier dans l_b. (si l_a est vide ne fait rien).
      ra rotate l_a (vers le debut, le premier element devient le dernier).
      rb rotate l_b (vers le debut, le premier element devient le dernier).
      rr ra et rb en meme temps.
      rra rotate l_a (vers la fin, le dernier element devient le premier).
      rrb rotate l_b (vers la fin, le dernier element devient le premier).
      rrr rra et rrb en meme temps.
 
Examples.
La liste a et b sera defini ainsi :
l_a 2 1 3 6 5 8
l_b      
 
    * sa
      l_a 1 2 3 6 5 8
      l_b      
    * pb pb pb
      l_a 6 5 8
      l_b 3 2 1
    * ra rb (on peut donc aussi dire rr)
      l_a 5 8 6
      l_b 2 1 3
    * rra rrb (on peut donc aussi dire rrr)
      l_a 6 5 8
      l_b 3 2 1
    * sa
      l_a 5 6 8
      l_b 3 2 1
    * pa pa pa
      l_a 1 2 3 5 6 8
      l_b      
 
Le programme.
Vous devez faire un programme qui prend en parametre la liste l_a sous la forme d'une liste de parametres (elle est correcte (pas de doublon , tout les nombres sont bons et rentrent dans un entier). Le programme doit afficher la suite d'operation qui permet de trier la liste. Les operations seront affichees separees par un espace (un seul), pas d'espace au debut ni a la fin, le tout suivi d'un '\n'.
Plus le nombre d'operation est faible, mieux c'est.
$./push_swap 2 1 3 6 5 8
sa pb pb pb sa pa pa pa
$

mood
Publicité
Posté le 07-01-2009 à 17:32:59  profilanswer
 

n°1835263
Joel F
Real men use unique_ptr
Posté le 07-01-2009 à 19:07:04  profilanswer
 

on fait pas les devoirs. Réfléchis y et montre à quoi tu arrive, on t'aidera aprés.

n°1835393
Mxtrem
Posté le 08-01-2009 à 00:59:39  profilanswer
 

Arf le mec qui fout le sujet du pushswap direct sur le forum :D
Allez, c'est pas trop dur, je vais te donner un indice : listes chainée circulaire.
Après, l'algo est fastoche

n°1835544
Darame
Posté le 08-01-2009 à 13:05:18  profilanswer
 

Joel F, je ne t ai pas demande de faire mon devoir, jai demande juste quelques pistes car je suis legerement perdu.. ralala les bolos dans les forums sa m enerve.
sinon merci Mxtrem, je vais faire quelques recherches :)
 
En fait je me rend compte que si je le fais a la main, jy arrive pas sur des longues chaines. je ne capte pas vraiment la logique a avoir... :S

Message cité 1 fois
Message édité par Darame le 08-01-2009 à 15:43:59
n°1835713
Joel F
Real men use unique_ptr
Posté le 08-01-2009 à 17:13:33  profilanswer
 

Darame a écrit :

Joel F, je ne t ai pas demande de faire mon devoir, jai demande juste quelques pistes car je suis legerement perdu.. ralala les bolos dans les forums sa m enerve.


 :sarcastic:  
 
Ce qui m'énerve moi c'est les gugus dans ton genre qui se croient chez mami.

n°1835722
Darame
Posté le 08-01-2009 à 17:43:32  profilanswer
 

Je te demanderai simplement de pas repondre si tu en a pas envie c'est tout.
Bref, ya-t-il une autre façon de le coder sans une liste chainée??
merci des reponses

n°1835733
0x90
Posté le 08-01-2009 à 18:00:57  profilanswer
 
n°1835791
Elmoricq
Modérateur
Posté le 08-01-2009 à 20:36:36  profilanswer
 

Darame a écrit :

Je te demanderai simplement de pas repondre si tu en a pas envie c'est tout.
Bref, ya-t-il une autre façon de le coder sans une liste chainée??
merci des reponses


La liste chaînée, c'est le B-A BA du C. Autant t'y mettre.

n°1835815
Mxtrem
Posté le 08-01-2009 à 22:24:17  profilanswer
 

Surtout que c'est pas bien dur  [:cerveau chacal_one] Même moi j'ai réussi.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C]programme affichant la suite d'operation pour trier une liste.

 

Sujets relatifs
[C] boucle de lecture streaming audio[Résolu][C] probleme avec une macro
[HELP] Communiquer en C/C++ avec des API Siemens S5Erreur dans un programme basique en C
[C] Interrompre une fonction qui attend une action utilisateur[C] Parcourir un fichier
Inserer de la gestion de donnees via SQL dans du code C[C - Gros débutant] Probleme de variable ...
Equivalent en C# pour sérialiser une structure. (Envoi par le réseau) 
Plus de sujets relatifs à : [C]programme affichant la suite d'operation pour trier une liste.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR