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

Turbo Pascal Discussion :

Remplir un tableau aléatoire puis mettre ses éléments en ordre croissant en utilisant un tri par insertion [Turbo Pascal]


Sujet :

Turbo Pascal

  1. #1
    Membre à l'essai
    Femme Profil pro
    Etudiante
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Remplir un tableau aléatoire puis mettre ses éléments en ordre croissant en utilisant un tri par insertion
    Salut

    Voici un programme que j'ai créé pour remplir un tableau aléatoire puis mettre ses éléments en ordre croissant en utilisant un tri par insertion.
    La compilation est correcte mais je n’obtiens pas que je veux dans l’exécution.

    Code Turbo Pascal :
    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
    Uses crt ;
    Const n=5 ;
    Type tab :array[1..n] of integer ;
    Var t :tab ; i : integer ;
    Procedure rando(t :tab ; i :integer) ;
    Begin
      Randomize ;
      For i :=1 to n do
        Begin
          T[i] := random(5) ;
        End ;
      For i :=1 to n do
        Begin
          Writeln (t[i]) ;
        End ;
    End ;
    Procedure tri(t :tab ;i :integer) ;
    Var k,j :integer ;
    Begin
      K :=t[i] ;
      J :=i ;
      While (i>0) and (t[j-1]>k) do
        Begin
          t[j] :=t[j-1] ;
          j :=j-1 ;
        end ;
      t[j] :=k ;
    end ;
    begin
      clrscr ;
      for i :=1 to n do
        begin
          writeln(‘entrz une valeur :’) ;
          readln(t[i]) ;
        end ;
      rando(t,n) ;
      tri(t,n) ;
      readln ;
    end.
    Que dois-je faire ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Pour qu'une nouvelle valeur soit attribuée à ta variable t, il faut ajouter le mot "var" dans la déclaration de la procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Procedure rando(var t :tab ; i :integer) ;
    Si tu ne fais pas cela, la valeur de la variable de référence reste inchangée. Mais comme tu as mis ton test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i :=1 to n do
    Begin
    Writeln (t[i]) ;
    End ;
    à l'intérieur de la procédure, tu as cru que la valeur de la variable était changée, ce qui n'était pas le cas : elle est changée à l'intérieur de la procédure, mais pas à l'extérieur.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Membre à l'essai
    Femme Profil pro
    Etudiante
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci pour votre remarque.
    J'ai fait cette modification mais j'obtiens toujours le même résultat : par exemple, si j’entre 5 7 9 4 2, à l'exécution j'obtiens 0 0 1 4 3.
    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
    Uses crt ;
    Const n=5 ;
    Type tab :array[1..n] of integer ;
    Var t :tab ; i : integer ;
    Procedure rando(var t :tab ; i :integer) ;
    Begin
    Randomize ;
    For i :=1 to n do
    Begin
    T[i] := random(5) ;
    End ;
    End ;
    Procedure tri(t :tab ;i :integer) ;
    Var k,j :integer ;
    Begin
    K :=t[i] ;
    J :=i ;
    While (i>0) and (t[j-1]>k) do
    Begin
    t[j] :=t[j-1] ;
    j :=j-1 ;
    end ;
    t[j] :=k ;
    end ;
    begin
    clrscr ;
    for i :=1 to n do
    begin
    writeln(‘entrz une valeur :’) ;
    readln(t[i]) ;
    end ;
    rando(t,n) ;
    tri(t,n) ;
    for i :=1 to n do
    begin
    writeln(t[i]);
    end;
    readln ;
    end.

  4. #4
    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
    Hoi,

    1 - Il faut penser à utiliser la balise [code] pour poster ton code, elle respectera l'indentation, et s'occupera de la coloration syntaxique.

    2 - Après la remarque de Roland Chastain concernant l'utilisation du mot clé var pour ta procédure rando, n'as-tu pas l'impression qu'il faudrait relire ton code, et vérifier si ça ne manque pas ailleurs ?

    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Etudiante
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    salut

    et finalement j'arrive au résultat
    voici la correction
    merci pour les remarques

    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
     Program intertion;
      uses crt;
      Type  tab =array[1..100] of integer ;
      Var   t :tab ; i,n,k : integer ;
     
      function  rando(n :integer):integer ;
       Begin
       rando := random(n) ;
      End;
     
     
     
      Procedure  tri(taille:integer; var tabl:tab) ;
      var
      invert:Boolean;  tmp:integer;
      begin
      invert:=true;
      while invert=true do begin
        invert:=false;
        for i := 1 to taille-1 do begin
           if tabl[i] > tabl[i + 1] then  begin
             tmp:= tabl[i];
             tabl[i] := tabl[i+ 1];
             tabl[i+1] := tmp ;
             invert := True;
           end;
        end;
      end;
      End;
     
     
     
      begin
      Randomize ;
      write('quelle est la taille du  tableau ? : ') ;
      read(n) ;
      k:=100;    {les nombres alétoires sont inclus dans 0 et 100}
     
      for i:=1 to n do begin
          t[i]:=rando(k);
      end;
      writeln(' ') ;
      writeln('-- avant tri ------') ;
      for   i :=1 to n do
            begin
            write(t[i]) ; write(' - ') ;
            end ;
      readln ;
      writeln(' ') ;
      writeln(' ') ;
      writeln('-- après tri ------') ;
     
      tri(n,t) ;
     
      for   i :=1 to n do
            begin
            write(t[i]) ; write(' - ') ;
           end ;
      readln ;
     
      end.

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

Discussions similaires

  1. [Article] Changer l'apparence d'un élément HTML en CSS3 en utilisant les styles par défaut des navigateurs
    Par FirePrawn dans le forum Publications (X)HTML et CSS
    Réponses: 17
    Dernier message: 23/09/2012, 15h21
  2. Réponses: 17
    Dernier message: 23/09/2012, 15h21
  3. remplir un tableau par des nombre aléatoires
    Par logo98 dans le forum Débuter
    Réponses: 7
    Dernier message: 06/03/2009, 23h22
  4. Remplir un tableau aléatoirement
    Par emprex dans le forum Débuter
    Réponses: 13
    Dernier message: 27/05/2008, 08h06
  5. Réponses: 6
    Dernier message: 21/03/2007, 14h59

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