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 :

Algorithmes de tri


Sujet :

Pascal

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut Algorithmes de tri
    salut je suis en 1ere année informatique
    donc je débute en programmation et j'ai un tp a faire que j'ai même pas su d'où le commencé bref voici l'énoncé :

    "il faut procéder selon les étapes suivantes:
    -spécifier et enregistrer les valeurs initiales dans un fichier
    -réaliser 3 algorithmes de tri ( interface graphique intégrant un menu )
    -afficher et enregistrer les résultats de chaque algorithme "

    alors je voudrais juste une idée de comment traiter cet exercice
    merci d'avance !

  2. #2
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour et bienvenue
    j'ai un tp a faire que j'ai même pas su d'où le commencé
    Alors il faut commencer par le debut et ça m'etonnerais que tu aies un tp à faire mais pas le notions élémentaires pour les faire
    On est prêt à t'aider si tu fournis des efforts et poses une question précise mais pas faire ton tp à ta place:
    Alors comme indication :
    -Savoir lire/écrire dans un ficher
    -Connaitre au moins trois algorithme de tri et savoir les implementer
    -Savoir affichier dans la sortie standart et ecrire des données dans un fichier

    Maintenant tu devrais savoir par ou commencer

    Et juste pour info
    ( interface graphique intégrant un menu
    tu es bien en Pascal .?(c'est pas Delphi par hasard?)
    Cordialement

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut
    avant tout merci !!
    et puis :
    -Savoir lire/écrire dans un ficher
    -Connaitre au moins trois algorithme de tri et savoir les implementer
    -Savoir affichier dans la sortie standart et ecrire des données dans un fichier
    je sais faire tous sa mais individuellement .. je sais pas comment faire le lien entre eux !!
    et oui on travaille avec le pascal

  4. #4
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Citation Envoyé par houta90 Voir le message
    ...
    "il faut procéder selon les étapes suivantes:
    1-spécifier et enregistrer les valeurs initiales dans un fichier
    2-réaliser 3 algorithmes de tri ( interface graphique intégrant un menu )
    3-afficher et enregistrer les résultats de chaque algorithme "

    ..
    Bonjour
    Et pourtant si tu relies ton énnoncé tu sauras comment faire le liens entre ces differents éléments

    1-On peut comprendre ça comme soit demander à l'utilisateur d'entrer différentes valeurs et ensuite les enregistrer dans un fichier soit entrer à la main via par exemple (un simple editeur comme gedit ou bloc note) des valeurs ensuite sauvegarder dans un fichier
    2-Et la tu devras aller lire ces valeurs precedement enregistées dans le fichier et ensuite par trois algorithmes de tri les classer.
    3-Apres le tri il faudra afficher le nouvel ordre obtenu dans la console et apres sauvergarder ces valeurs dans un fichier (peut etre a la suite de la precedente comme ça tu vera bien l'ordre des elements)
    2-réaliser 3 algorithmes de tri ( interface graphique intégrant un menu )
    Faudra soit apres la lecture des elements dans le ficher prevoir a demander a l'utilisateur l'algo de tri qu'il desire utiliser et comme c'est demander en mode graphique)
    Alors cette fois c'est clair?

    Cordialement

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut
    oui c'est bon
    merci !

  6. #6
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Après Si tu bloques sur un point précis dans le code tu peux toujours venir demander

  7. #7
    Membre averti
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut
    bon j'ai essayé de commencer ce tp mais il veut pas se compilé il m'affiche erreur comme quoi il y a une division sur 0 et une autre dans la syntaxe de "case" ...alors si vous pouvez bien m'aider parce que là je bloque graaaave




    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    program tp;
    uses crt;
    const n=100;
    type fichier = file of integer;
         vecteur = array[1..n]of integer;
    var rep: char;
        t1: vecteur;
        F1,F2: fichier;
        k,nom: string[20];
        a:integer;
     
    procedure lecture(var t:vecteur);
    var i: integer;
    begin
    writeln('veuillez entrer les elements du tableau');
    for i:=1 to n do read (t[i]);
    end;
     
    procedure enregistrer(t:vecteur ; var f:fichier);
    var i:integer;
    begin
    rewrite(f);
    for i:=1 to n do write(f,t[i]);
    end;
     
    procedure copie(var f:fichier ; var t:vecteur);
    var i:integer;
    begin
    reset(f);
    i:=1;
    while not eof(f) do
      begin
      read(f,a);
      t[i]:=a;
      i:=i+1;
      end;
    end;
     
    procedure tri_insertion(var t:vecteur);
    var i,j,temp:integer;
    begin
    for i:=2 to 10 do
      begin
      temp:=t[i];
      j:=i;
      while t[j-1]> temp do
           begin
           t[j]:=t[j-1];
           j:=j-1;
           end;
      t[j]:= temp;
      end;
    end;
     
    procedure tri_selection(var t:vecteur);
    var i,j,temp:integer;
    begin
    for i:=1 to n-1 do
      for j:=i+1 to n do
        if t[i]<t[j]  then
          begin
          temp:= t[j];
          t[j]:= t[i];
          t[i]:= temp;
          end;
    end;
     
    procedure tri_bulle(var t:vecteur);
    var i,j,temp:integer;
    begin
    for i:=n downto 1 do
     for j:=1 to (i-1) do
      if t[j]>t[j+1] then
           begin
           temp:=t[j];
           t[j]:=t[j+1];
           t[j+1]:=temp;
           end;
    end;
         {==================================================================}
                               {programme principal}
         {==================================================================}
     
    BEGIN
    clrscr;
    writeln('tapez ''c'' si vous voulez entrer les valeurs par le clavier');
    writeln('tapez ''f'' si les valeurs se trouvents dans fichier');
    read(rep);
    if rep='c' then
      begin
      lecture(t1);
      assign(F1,'tableau_a_trier');
      enregistrer(t1,F1);
      end
    else if  rep='f' then
      begin
      writeln('entrez le nom du fichier');
      read(nom);
      assign(f2,nom);
      copie(f2,t1);
      end
    else writeln('erreur');
     
    writeln('choisissez le tri que vous souhaitez');
    writeln('÷ Insertion');
    writeln('÷ Selection');
    writeln('÷ Bulle');
    read(k);
    case k of
     'insertion': tri_insertion(t1);
     'selection': tri_selection(t1);
     'bulle': tri_bulle(t1)
     else writeln('ce tri n''existe pas ');
     end;
    readln;
    readln;
    end.
    mercii

  8. #8
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    L'aide de Pascal te fourni les informations sur les erreurs(concernant le case) que tu cites plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    case k of
     'insertion': tri_insertion(t1);
     'selection': tri_selection(t1);
     'bulle': tri_bulle(t1)
      ......
    Le case attend un type ordinal ;(une recherche sur case s'impose) ce qui serait bien ou simple à faire serait de faire un petit menu dans le genre:
    1-Tri insertion
    2-...Selection
    3-... Bulle
    comme ça un entier correpondra au tri choisi.
    Alors conseil:
    1-Pour les entrées sur la sortie standart utilises plutot readln au lieu de read
    2-Dans ta procedure lecture :tu lis 100 entiers sans préciser a l'utilisateur le nombre d'entiers qu'il devra entrer ,tu imagines 100 s'il n'est pas au courant il va se demander s'il n'est pas dans une boucle infinie(tu peux en fixer pêut etre juste 10 ...)
    3-les 2 readln a la fin euh... un seul suffira
    .....
    cordialement

  9. #9
    Membre averti
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut
    mercii pour la réponse mais je n'ai pas compris une chose
    Pour les entrées sur la sortie standart utilises plutôt readln au lieu de read
    vous voulez dire quoi par les entrées de la sortie standard

  10. #10
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Citation Envoyé par houta90 Voir le message
    mercii pour la réponse mais je n'ai pas compris une chose
    vous voulez dire quoi par les entrées de la sortie standard
    Bonjour
    Je veux dire par là ,quand tu lis des valeurs dans la console d'execution il faut utiliser readln au lieu de read.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure lecture(var t:vecteur);
    var i: integer;
    begin
       writeln('veuillez entrer les elements du tableau');
       for i:=1 to n do 
           readln (t[i]);{utilisation de readln}
    end;
    Cordialement

  11. #11
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Par défaut algo de tri
    Bonsoir.
    quel est le type de ton fichier ? (si c'est un fichier texte la déclaration est Type Fichier = file of text;
    ou binaire type =file of Enregistrement; {Enregistrement un un type structuré défini par le programmeur}
    Je ne sais pas si ta déclaration là (Fichier=File of Integer marche.
    Après l'ouverture de ton fichier(en écriture et en lecture tu ne le ferme pas )
    close(nom_du_fichier);
    Je trouve mieux que toutes les intructions qui vont entrées dans la création du fichier soient à l'interieur de la procédure donc il faut utiliser assign dans la procédure.
    assign lie le fichier interne avec le fichier externe, tu as utilisé la chaîne table_a_trier (je ne sais pas si ça marche mais je trouve mieux d'utiliser un nom explicite par exemple assign(f,'C:\Nom_du_fichierexterne') avec ça tu sais que ton fichier est dans la racine c est et tu vas l'ouvrir facilement au cas où tu vas entrer directement les infomation dans le fichier sans passé par le programme

  12. #12
    Membre averti
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Par défaut
    bsr
    -wé j'ai remarqué que j'ai oublié de mettre les close*
    -pour le type du fichier avec quoi je peut remplacer integer parce que ces des tri d'entiers
    -et pour assign je l'ai pas mi dans la procedure parce que j'ai pas su comment faire quand je fais l'appel de la procedure
    enfin merci pour les réponses !!

  13. #13
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    Citation Envoyé par Roland2007 Voir le message
    Bonsoir.
    quel est le type de ton fichier ? (si c'est un fichier texte la déclaration est Type Fichier = file of text;
    ou binaire type =file of Enregistrement; {Enregistrement un un type structuré défini par le programmeur}
    Je ne sais pas si ta déclaration là (Fichier=File of Integer marche.
    Oui ça marche et il s'agira tout simplement d'un fichier typé (le type pouvant être un entier ou un enregistrement ou un type prédéfni par le programmeur mais pas un type fichier )
    Donc houta90 peut bien garder sa déclaration telle qu'elle est actuellement .
    @houta90 Je viens de jetter un coup d'oeil sur la procédure pour le tri insertion l'algo n'est pas tout à fait correct sers-toi de ou et tu veras ce qui cloche

    Cordialement

  14. #14
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Hoe,
    Citation Envoyé par Roland2007 Voir le message
    quel est le type de ton fichier ? (si c'est un fichier texte la déclaration est Type Fichier = file of text;
    En Pascal, une variable fichier texte se déclare ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    Var
      fichier : Text;
    ...
    Je doute que "Type Fichier = file of text;" compile.

  15. #15
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Citation Envoyé par droggo Voir le message
    Hoe,
    En Pascal, une variable fichier texte se déclare ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    Var
      fichier : Text;
    ...
    Je doute que "Type Fichier = file of text;" compile.
    +1 evidement et je crois que c'est clair dans l'aide de TP
    Citation Envoyé par aide de TP7
    ________________________________________
    File components may not be files or objects
    ________________________________________
    -> Les éléments de fichiers ne doivent pas étre
    -> de type fichier ni de type objet

    Un élément d'un type fichier ne doit pas être
    de type fichier ni objet, ni tout autre type
    structuré‚ comprenant un type fichier.
    Cordialement

  16. #16
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Par défaut algo de tri
    Citation Envoyé par droggo
    Hoe,
    En Pascal, une variable fichier texte se déclare ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    Var
      fichier : Text;
    ...
    Je doute que "Type Fichier = file of text;" compile.
    Je doute que "Type Fichier = file of text;" compile.
    oui c'est vrai. c'est une erreur de ma part car j'ai confondu la déclaration d'un fichier text qui est prédéfini avec la déclaration d'un type fichier défini par le programmeur.
    C'est quand le type est défini par le programmeur qu'on fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type Enregistrement=record
         non,Prenom:string;
    end;
      fichier= file of Enregistrement; {cette parti conserne uniquement les fichiers qui ne
     sont pas prédefinis, c'est ici ma confusion}
      var Fiche:fichier;
    Que ça soit un fichier prédefini ou defini par le programmeur la déclaration est toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nom_de_fichier:type_de_fichier;

Discussions similaires

  1. Complexité de l'algorithme de Tri Fusion
    Par judge06 dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 26/03/2007, 22h04
  2. A propos des algorithmes de tri..
    Par Kerwando dans le forum C++
    Réponses: 4
    Dernier message: 19/08/2006, 11h43
  3. Probleme avec mon algorithme de tri
    Par kaygee dans le forum Langage
    Réponses: 6
    Dernier message: 09/01/2006, 21h23
  4. Réponses: 16
    Dernier message: 10/11/2005, 22h51
  5. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50

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