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 par insertion


Sujet :

Pascal

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Tri par insertion
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Program tri_insertion;
    uses wincrt {By Boumaiza Wael _ Boumaiza_S@t};
    type
    vect=array[1..100] of integer;
    var
    n:integer;
    t:vect;
     
    procedure saisir(var n:integer);
    begin
    repeat
    write('Saisir la taille du tableau: ');
    readln(n);
    until n in [5..25];
    end;
     
    procedure remplir(var t:vect;n:integer);
    var
    i:integer;
    begin
    for i:=1 to n do
    begin
    write('T[',i,']: ');
    readln(t[i]);
    end;
    end;
     
    procedure trier(var t:vect; n:integer;
    var
    i,j,x,pos:integer;
    begin
    for i:=1 to n do
    begin
    pos:=i-1;
    while (t[pos]>t[i]) and (pos>=1) do
    pos:=pos-1;
    pos:=pos+1;
    x:=t[i];
    for j:=i-1 downto pos do
    t[j+1]:=t[j];
    t[pos]:=x;
    end;
    end;
     
    procedure afficher(t:vect;n:integer);
    var
    i:integer;
    begin
    for i:=1 to n do
    write(t[i]:5);
    end;
     
    begin
    saisir(n);
    remplir(t,n);
    trier(t,n);
    afficher(t,n);
    writeln;
    writeln('{By Wael Boumaiza _ Boumaiza_S@t}');
    end.

  2. #2
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour

    ça serait sympa de ta part de nous dire exactement le probleme que tu rencontre pour nous eviter d'epulcher tout le code ,Et le sujet du Post pas tres indicatif et informatif
    -indentes ton code
    -commentes ton code
    remarque:il y a pas que les procedures en Pascal les Fontions aussi existe notemment mieux adapté pour faire une saisie (à mon goût)
    @+
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  3. #3
    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
    Dio,

    Le temps de retrouver ma boule de cristal...

    Franchement, comme l'a déjà écrit krachik, tu ne penses pas qu'un petit effort de ta part nous aiderait à t'aider ?

    Juste en jetant un très rapide coup d'oeil, je vois au moins quelque chose qui est incohérent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    type
    vect=array[1..100] of integer;
     
    procedure saisir(var n:integer);
    begin
    repeat
    write('Saisir la taille du tableau: ');
    readln(n);
    until n in [5..25];
    end;
    pourquoi un tableau de taille 100, si le programme limite de fait la taille utile à 25 ?
    Si les cons volaient, il ferait nuit à midi.

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Je ne vois pas d' erreur dans ton programme. Juste que tu as oublié de fermer la parenthese de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure trier(var t:vect; n:integer;
    Aussi, il faut mettre un readln à la fin pour que tu ait le temps de voir le resultat de ton travail.
    Je l' ai essayé et ça fait bien le tri. Je n' ai pas pris le temps de voir le code en profondeur alors je ne peux pas te dire plus.

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 11
    Points
    11
    Par défaut mais quelle est ton problème ?
    Citation Envoyé par waelboumaiza Voir le message
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Program tri_insertion;
    uses wincrt {By Boumaiza Wael _ Boumaiza_S@t};
    type
    vect=array[1..100] of integer;
    var
    n:integer;
    t:vect;
     
    procedure saisir(var n:integer);
    begin
    repeat
    write('Saisir la taille du tableau: ');
    readln(n);
    until n in [5..25];
    end;
     
    procedure remplir(var t:vect;n:integer);
    var
    i:integer;
    begin
    for i:=1 to n do
    begin
    write('T[',i,']: ');
    readln(t[i]);
    end;
    end;
     
    procedure trier(var t:vect; n:integer;
    var
    i,j,x,pos:integer;
    begin
    for i:=1 to n do
    begin
    pos:=i-1;
    while (t[pos]>t[i]) and (pos>=1) do
    pos:=pos-1;
    pos:=pos+1;
    x:=t[i];
    for j:=i-1 downto pos do
    t[j+1]:=t[j];
    t[pos]:=x;
    end;
    end;
     
    procedure afficher(t:vect;n:integer);
    var
    i:integer;
    begin
    for i:=1 to n do
    write(t[i]:5);
    end;
     
    begin
    saisir(n);
    remplir(t,n);
    trier(t,n);
    afficher(t,n);
    writeln;
    writeln('{By Wael Boumaiza _ Boumaiza_S@t}');
    end.
    tu doit expliquer quel est ton problème pour que les différent(e)s membres, ou qqc un autre, peuvent t'aider. ok

  6. #6
    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
    Gie,
    Citation Envoyé par darrylsite Voir le message
    Je ne vois pas d' erreur dans ton programme. Juste que tu as oublié de fermer la parenthese de la fonction
    C'EST une erreur.

    Mais elle a dû être signalée par le compilateur, et aurait dû être corrigée avant de venir poser une question ici.
    N'est-ce pas, waelboumaiza ?
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Bonjour à tout le monde
    vous etes sûr que ce code fonctionnne normalement?
    parce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    type
    vect=array[1..100] of integer;
    ...............
    for i:=1 to n do
    begin
    pos:=i-1;
    while (t[pos]>t[i]) and (pos>=1) do
    .........
    Il devait y avoir un probleme à ces ligne le tableau commencant à 1 et pour pos:=i-1(pour i=1 pos sera egal a 0 et t[pos] generera un debordement du tableau) Enfin si je suis la logique du code


    Cordialement
    InYourFace

  8. #8
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par InYourFace Voir le message
    Bonjour à tout le monde
    vous etes sûr que ce code fonctionnne normalement?
    parce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    type
    vect=array[1..100] of integer;
    ...............
    for i:=1 to n do
    begin
    pos:=i-1;
    while (t[pos]>t[i]) and (pos>=1) do
    .........
    Il devait y avoir un probleme à ces ligne le tableau commencant à 1 et pour pos:=i-1(pour i=1 pos sera egal a 0 et t[pos] generera un debordement du tableau) Enfin si je suis la logique du code


    Cordialement
    InYourFace
    Tu as bien raison. Il y' a bien un probleme au niveau des indices.
    Mais sous turbo pascal, quand l'option de controle des debordements n' est pas activée, ces genres d' erreurs passent inaperçus.
    Mais je crois que l' indice i devrais commencer à 2 qu' à 1.
    Enfin c' est son algo.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Merci pour tout...
    Merci pour tout...

Discussions similaires

  1. besoin d'aide pour le tri par insertion.
    Par argon dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 18/05/2006, 11h15
  2. tri par insertion et Structures
    Par bonjour69 dans le forum C
    Réponses: 2
    Dernier message: 23/12/2005, 12h46
  3. [LG] Le tri par insertion d'un enregistrement
    Par phoebee dans le forum Langage
    Réponses: 4
    Dernier message: 01/09/2005, 20h38
  4. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

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