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 :

Algo de tri


Sujet :

Algorithmes et structures de données

  1. #1
    Membre émérite Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Par défaut Algo de tri
    Bonjour à tous,

    voila l'énoncé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Recherchez des entiers n'apparaissant qu'une fois dans un tableau non-trié et non croissant et les récpuérer .
    J'ai pensé à ceci :

    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
    program trirepetition;
     
    var repet,i,l,current : integer;
        tab : array[1..5] of integer;
        tabNoRepet : array[1..5] of integer;
     
    begin
     
    i := 1;
    l := 1;
    repet := 0;
     
    while(i<=5) do
    begin
    current := tab[l];
            if(current<>tab[i+1]) then
                    begin
                    i := i + 1;
                    repet := 0;
                     if(i=6) then
                     begin
                     tabNoRepet[l] := tab[i];
                     l := l + 1;
                     end;
                    end;
            if(current=tab[i+1]) then
                    begin
                    repet := 1;
                    i := i + 1;
                    l := l + 1;
                    end;
     
    end;
     
    end.
    seulement le problème est que j'obitens un value outOfrange a cause du i+1 quand celui-ci vaut 5 et je ne vois pas comment parcourir entierement le tableau sans utiliser cela :s cela doit etre tout bete mais bon d'avance merci

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Par défaut
    prend i = 2 au depart et compare a tab i et non i+1

    ensuite pourquoi une foi que tu c'est que cela se répète tu continu a parcouir le tableau?

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Tu peux faire cet exercice en 3 parcours de tableaux :
    premier parcours, tu lis le tableaux à travailler en repérant la plus petite et la grande valeur (soient nmin et nmax les 2 valeurs).
    tu crées un tableaux auxiliaire dont la numérotation des éléments va de nmin à nmax, tu initialises ce tableau à zéro;
    deuxième parcours : tu parcours le premier tableau et tu incrémentes de 1 les cases correspondantes du tableau auxiliaire.
    troisième parcours : tu lis le tableau auxiliaire et tu affiches les nombres dont les cases correpondantes sont à 1.

    Cette méthode (tri par casiers) n'est évidemment valable que pour des entiers, mais c'était dans l'énoncé de l'exercice.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre émérite Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Par défaut
    ah oui je n'y avais pas pensé merci a vous deux ^^

  5. #5
    Membre émérite Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Par défaut
    Si cela intéresse quelqu'un voila le code que j'ai réalisé


    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
    program tableaurepettest;
     
    var
    tab : array[1..5] of integer;
    tabverify : array[1..5] of integer;
    i,l : integer;
     
    begin
     
    tab[1] := 103;
    tab[2] := 300;
    tab[3] := 103;
    tab[4] := 220;
    tab[5] := 290;
     
    i := 1;
    l := 2;
     
            while(i<5) do
            begin
                    while(tab[i]<>tab[l]) AND (l<=4) do
                    begin
                    l := l + 1;
                    end;
     
                    if(tab[i]=tab[l]) then
                    begin
                    tabverify[i] := 1;
                    i := i + 1;
                    end;
     
                    if(l=5) AND (tab[i]<>tab[l]) then
                    begin
                    writeln(tab[i]);
                    i := i + 1;
                    end;
     
            end;
     
    end.

  6. #6
    Membre émérite
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Par défaut
    Citation Envoyé par Trap D
    Tu peux faire cet exercice en 3 parcours de tableaux :
    premier parcours, tu lis le tableaux à travailler en repérant la plus petite et la grande valeur (soient nmin et nmax les 2 valeurs).
    tu crées un tableaux auxiliaire dont la numérotation des éléments va de nmin à nmax, tu initialises ce tableau à zéro;
    Si nmin est très petit et nmax très grand, ne risques-tu pas d'occuper énormément de mémoire ?

    Suggestion d'algo :

    soit A le tableau à traiter, B un tableau trié des éléments rencontrés dans A et C le tableau trié des éléments apparaissant une seule fois dans A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    pour chaque élément de A
      si A[i] est dans B alors
        retirer A[i] de C
      sinon
        ajouter A[i] dans B
        ajouter A[i] dans C
    fin pour
    // C contient les éléments n'apparaissant qu'une seule fois dans A
    Je pense que le fait de trier B et C doit accélérer le traitement

    Bloon

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par Bloon
    Si nmin est très petit et nmax très grand, ne risques-tu pas d'occuper énormément de mémoire
    Tout à fait, c'est un tri très particulier, mais qui est très efficace lorsqu'on peut l'utiliser.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

Discussions similaires

  1. Algo de tri par liste chainée
    Par Treuze dans le forum C
    Réponses: 3
    Dernier message: 30/12/2005, 14h05
  2. algo de tri gérant les exaequo
    Par tomy29 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 13/10/2005, 13h54
  3. quel est le meilleur algo de tri de liste ?
    Par sony351 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 24/07/2005, 02h00
  4. algo de tri
    Par el toro diablo dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 05/11/2003, 08h43
  5. Algo de tri, extension
    Par Mouse dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/02/2003, 00h14

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