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

Free Pascal Discussion :

Tableau décroissant


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut Tableau décroissant
    Bonjour

    J'ai créé un programme : tableau décroissant en Free Pascal. Ça ne marche pas, pourquoi ?
    Regardez ici

    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
     
     
    program decroisant;
    Type
      TA = Array[0..9999999] of Integer;
    var i,posmaxi,j,temp,n:integer;
    t:TA;
     
     
     
    begin
     
     
    begin
    for i:=0 to n-2 do
    posmaxi:=i;
    begin
    for j:=i-1 to n-1 do
    if t[j]>t[posmaxi] then
    posmaxi:=j;
    end;
    temp:=t[posmaxi];
    t[posmaxi]:=t[i];
    t[i]:=temp;
    end;
    end.
    Regardez la photo :

    Nom : 1defaut.JPG
Affichages : 1836
Taille : 66,2 Ko


    Nom : 2defautl.JPG
Affichages : 1708
Taille : 58,6 Ko

  2. #2
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut
    Bonjour,

    Rapidement, sans essayer de comprendre le programme et en me mettant à la place de l'ordinateur qui va exécuter pas à pas toutes les instructions, ce dernier devra lire la valeur d'un tableau avec un indice négatif (=> t[-1]). Il arrêtera le programme à ce moment-là .

    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut
    Citation Envoyé par bataff Voir le message
    Bonjour,

    Rapidement, sans essayer de comprendre le programme et en me mettant à la place de l'ordinateur qui va exécuter pas à pas toutes les instructions, ce dernier devra lire la valeur d'un tableau avec un indice négatif (=> t[-1]). Il arrêtera le programme à ce moment-là .

    Cordialement.
    Que dois-je faire : i-1 entre parenthèses ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut
    Entre parenthèses ?

    Non, la syntaxe t[...] est correcte. Il faut faire en sorte que ce qui est entre les crochets ne soit jamais négatif.

    Plus précisément (lignes 18 et 19) :
    ...
    for j:=i-1 to n-1 do
    if t[j]>t[posmaxi] then
    ...
    Au début, on a i=0 donc j=i-1=-1 et donc t[j]=t[-1] => impossible. C'est là où l'ordinateur s'arrête.

  5. #5
    Membre Expert

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Par défaut
    Bonsoir,

    Méthode pour un tri décroissant (tableau débutant à l'indice 0):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for I := Length(Tableau) - 2 downto 0 do
      begin
         for J:= 0 to I do
         begin
            if Tableau[J + 1] > Tableau[J] then
            begin
               Temp := Tableau[J + 1];
               Tableau[J + 1] := Tableau[J];
               Tableau[J] := Temp;
            end;
         end;
       end;
    Pour un tri croissant, il suffit de remplacer : if Tableau[J + 1] < Tableau[J] then...

    Cordialement
    Thierry

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut
    Citation Envoyé par bataff Voir le message
    Entre parenthèses ?

    Non, la syntaxe t[...] est correcte. Il faut faire en sorte que ce qui est entre les crochets ne soit jamais négatif.

    Plus précisément (lignes 18 et 19) :

    Au début, on a i=0 donc j=i-1=-1 et donc t[j]=t[-1] => impossible. C'est là où l'ordinateur s'arrête.

    regarde ça

    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
     
     
    program decroisant;
    procedure decroisan(var s: string);
     
    Type
      TA = Array[0..9999999] of Integer;
    var i,posmaxi,j,temp,n:integer;
    t:TA;
     
     
     
    begin
     
     
    begin
    for i:=1 to ( n-2) do
    posmaxi:=i;
    begin
    for j:=(i-1) to( n-1) do
    if t[j]>t[posmaxi] then
    posmaxi:=j;
    end;
    temp:=t[posmaxi];
    t[posmaxi]:=t[i];
    t[i]:=temp;
    end;
    begin
    write('t[i]');
    readln(t[i]);
    end;
    end;
     
     
    var
      s1: string;
       begin
      s1 := '5 44 22 66 99 5 4  66 66 55'; // ou ReadLn(s1);
      decroisan(s1);
      WriteLn(s1);
      ReadLn;
    end.

  7. #7
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Par défaut
    Non, mettre des parenthèses à i-1 (ligne 20 du nouveau listing) ne servira à rien. (i-1) ou i-1 : cela n'a aucune importance ici.

    Vous n'avez pas compris le sens de mon dernier message

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/01/2012, 14h08
  2. [TPW] Tableau décroissant
    Par mamislimen dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 30/05/2011, 19h30
  3. Tri de chiffres décroissant dans un tableau
    Par cre3000 dans le forum Langage
    Réponses: 4
    Dernier message: 23/02/2008, 13h05
  4. Corriger cet Algo et trier les éléments du tableau en ordre décroissant
    Par PIMPMAX dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 07/01/2007, 19h25
  5. Trier les données dans 1 tableau par ordre décroissant
    Par Blunet dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 23/11/2005, 09h56

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