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

Pascal Discussion :

Tri shell : erreur dans le livre bac info ?


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Tri shell : erreur dans le livre bac info ?
    le premier pas dans l'exemple du tri shell dans le livre bac info
    pour n = 15 , le premier pas doit etre egale à 13 .
    je vous demande bien de refaire L'exemple du livre et j'attend vos réponses.

    voici le code :
    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
     
     
    procedure trishell (var t:tab; n:integer ) ;
     var    p,i,j,v: integer;
     begin    
         p:=0;
         while p<= n do    
         p:= 3*p+1;
         while p <> 0 do
          begin
              p:=p div 3;
              for i:= p to n do
               begin
                    v:=t[i];
                    j:=i;
                    while (j > p-1) and (t[j-p] > v ) do
                     begin
                          t[j]:=t[j-p];
                          j:=j-p;
                     end;
                    t[j]:=v;
               end;
          end;
     end;

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Noe,

    Et si tu nous postais le code en question ?

    Sûr que je vais acheter ce livre juste pour voir (quel qu'en soit le prix).
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Oui, avec l'énoncé complet (& en français correct), en plus, afin qu'on comprenne ce que tu as écrit.
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    voici le code
    le premier pas dans l'exemple du tri shell dans le livre bac info
    pour n = 15 , le premier pas doit etre egale à 13 .
    je vous demande bien de refaire L'exemple du livre et j'attend vos réponses.

    voici le code :
    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
     
     
    procedure trishell (var t:tab; n:integer ) ;
     var    p,i,j,v: integer;
     begin    
         p:=0;
         while p<= n do    
         p:= 3*p+1;
         while p <> 0 do
          begin
              p:=p div 3;
              for i:= p to n do
               begin
                    v:=t[i];
                    j:=i;
                    while (j > p-1) and (t[j-p] > v ) do
                     begin
                          t[j]:=t[j-p];
                          j:=j-p;
                     end;
                    t[j]:=v;
               end;
          end;
     end;

  5. #5
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Il y a sûrement quelques explications à ajouter : par exemple c'est quoi le type tab ? C'est quoi l'autre paramètre de la fonction ?
    Etc.

    Je répète : peux-tu nous donner les détails ainsi que ce que tu souhaites savoir, ce que tu voudrais qu'on essaye, qu'on t'explique...
    Car tu t'es contenté de placer un bout de code sans autre précision, ce qui ne nous éclaire pas énormément.
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut tab est un tableau d'entier
    tab est un tableau d'entiers
    et je vous demande de calculer le premier pas à utiliser dans le tri avec un tableau de 15 entiers
    moi j'ai trouvé que le premier pas = 13 mais mon prof m'a dis que le premier pas = 4
    ET MOI je veux savoir la bonne réponse en utilisant ce code avec un tableau de 15 entiers
    j'explique un peux le fonctionnement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         while p<= n do    
           p:= 3*p+1;
    avec la boucle while on a sorti avec p = 40
    PUIS on execute l'instruction suivante
    p devient égale à 13
    ET on execute la boucle pour de 13 à 15
    DONC le premier pas d'aprés mon raisonnement est égale à 13
    moi je veux connaitre est ce que mon raisonnement est juste.
    SVP repondez moi

  7. #7
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Voilà qui est plus clair !

    En ce qui concerne la procédure que tu as fournie, j'ai pu faire des essais.
    Consternant !
    Si n =nombre d'éléments à trier, alors pas de pb.
    Si n < ce nombre, alors seuls les n premiers nombres sont triés !
    Essai réalisés sur 20 éléments.
    Bref, je n'ai rien compris. Es-tu sûr de n'avoir rien oublié en le recopiant ?
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    n c'est la taille du tableau
    et moi je te demande de travailler avec n= 15

  9. #9
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 234
    Points : 2 338
    Points
    2 338
    Par défaut
    Citation Envoyé par adel_info Voir le message
    n c'est la taille du tableau
    Ce n'est pas la question que je t'ai posée dès le début, ça ?
    et moi je te demande de travailler avec n= 15
    Là, c'est si je veux.
    Surtout que tu aurais pu le préciser aussi dès le début.
    « Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    qui as fais le code avec n = 15 ?
    quelle est la valeur du premier pas "p" à utiliser dans le tri

  11. #11
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    p = 4

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut re
    pas=13
    pas=4
    pas=1

  13. #13
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    oui c'est la bonne reponse

    1ER pas=13
    2 EME pas=4
    3 pas=1

  14. #14
    Futur Membre du Club
    Profil pro
    Data Engineer, scala, spark, kafka
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Data Engineer, scala, spark, kafka

    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Points : 9
    Points
    9
    Par défaut resonnement
    C vrai que le pas initiale est comme tu as dit égale as 13 pour le cas d'un tableau de 15 entier
    Mais j'ai quelque chose a dire et que j'ai remarquer dans l'algorithme de tri shell
    c'est quand le pas atteindre 1 puis l'algorithme se reprend avec p=1<>0 puis
    il fait l'instruction p:=p div 3 ce qui est équivalent a 0 est ce que je pense que c'est évident de le faire

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

Discussions similaires

  1. Erreur dans le livre Mieux programmer en C++?
    Par feidaykin dans le forum Livres
    Réponses: 16
    Dernier message: 12/06/2013, 03h06
  2. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45

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