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 :

Générer des nombres entiers aléatoires dans un tableau et trier celui-ci


Sujet :

Free Pascal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 15
    Points : 0
    Points
    0
    Par défaut Générer des nombres entiers aléatoires dans un tableau et trier celui-ci
    Bonjour

    j'aimerais effectuer un programme qui génère automatiquement 40 nombres entiers dans un tableau, compris entre 1 et 30, mais j'aimerais les trier par ordre croissant et afficher à nouveau le tableau juste en dessous.

    Merci.

    Pour l'instant j'ai
    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
    var   tab : array[1 .. 40] of integer;
          num,tri,temp:integer;
     
     
    begin
      writeln('-----------------------');
      writeln('tableau des entiers.');
      writeln('-----------------------');
     
      randomize;
     
      for num := 1 to 40 do
        begin
          tab[num] := random(30);
          write(tab[num]:8);
     
     
        end;

  2. #2
    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
    Joe,

    En clair, tu n'as rien.

    Les algorithmes de tri ne manquent pas, et il faut - au moins - quelques secondes pour trouver.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Points : 506
    Points
    506
    Par défaut
    Citation Envoyé par droggo Voir le message
    Joe,

    En clair, tu n'as rien.

    Les algorithmes de tri ne manquent pas, et il faut - au moins - quelques secondes pour trouver.
    Rhooooo... Ce n'est pas très serviable ni amical de répondre ainsi alors que la question a déjà été traitée il y a peu ici.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 15
    Points : 0
    Points
    0
    Par défaut
    oui mais je vois pas trop lequel prendre a votre avis?

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Facile à mettre en oeuvre, le tri à bulles !
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  6. #6
    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
    Citation Envoyé par batyann811 Voir le message
    alors que la question a déjà été traitée il y a peu ici.
    Joli morceau de code, que j'ajoute à mon catalogue d'exemples.

    C'est donc ça, la méthode de Monte-Carlo ? En somme ça revient à essayer toutes les combinaisons jusqu'à ce qu'on tombe sur la bonne. En outre je ne vois pas bien ce qu'on gagne en produisant les combinaisons dans un ordre aléatoire. Ne pourrait-on pas se dispenser des appels à la fonction random en suivant un ordre rationnel ?

    En attendant, j'aime encore mieux faire comme ç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
    procedure TrierTableau(var T: TableauATrier);
    var
      I, J, N: Integer;
      Temp: TableauATrier;
    begin
      N := 0;
      I := 0;
      repeat
        for J := Low(T) to High(T) do if T[J] = I then begin
    	                                             Inc(N);
                                                         Temp[N] := T[J];
                                                       end;
        Inc(I);
      until (N = TailleTableau);
      T := Temp;
    end;
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Points : 506
    Points
    506
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    En outre je ne vois pas bien ce qu'on gagne en produisant les combinaisons dans un ordre aléatoire.
    Justement on y gagne rien. C'est juste une méthode stupide mais qui marche (en général) pour trier un tableau.


    Néanmoins ça répond parfaitement au problème de praetis. Au pire, il a juste à changer l'algo de tri, par le tien par, exemple.

  8. #8
    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
    Merci pour ta réponse et pour les liens.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  9. #9
    Membre actif
    Avatar de EtherOS
    Homme Profil pro
    Etudiant Polytechnicien
    Inscrit en
    Juillet 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant Polytechnicien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 58
    Points : 233
    Points
    233
    Par défaut Proposition
    je vais juste completer ton code :
    Je vais d'abord declarer une procedure TRI_INSERT celle-ci sera de preference par insertion (pour sa simplicite):

    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
    Uses Crt; {contient les procedures Clrscr , GotoXY et Textcolor}
    Const ValMax = 40;
    Type  T_Array : array[1 .. ValMax] of Integer;
    Procedure TRI (var Tab : T_array; Nb_Elts : Integer);
    { Objectif :  Tri par ordre croissant d'un vecteur des nombres reels par le tri 
     par insertion }
    { Input : le tableau Tab non trie}
    {Output : le tableau Tab trie}
    Var lower, upper :integer;
             value : reel;
    Begin (*TRI_INSERT*)
            For lower := 2 To Nb_Elts Do
                 Begin
                         value := Tab[lower];
                          upper := lower;
                           While (upper >1) And (Tab[upper-1] > value) Do
                                Begin
                                        Tab[upper]:= Tab[upper-1];
                                          upper:= upper - 1;
                                End;
                                Tab[upper] := value;
                 End;
    End; (* TRI_INSERT *)
    
    {--------------------------Programme Principal --------------------------------------- }
     Var   count,srand :integer;
             T : T_Array;
    Begin
     Clrscr;
      Randomize;
      srand = 30;
      For  count := 1 To ValMax Do
        Begin
          T[count] := Random(srand);
           Textcolor (10);
        GotoXY(2+count,10);Write (T[count]:8);
        End;
       TRI_INSERT (T,Valmax);
       For  count := 1 To ValMax Do
        Begin
           Textcolor(14);
           GotoXY (2+count,14);Write (T[count]:8);
          End; 
          Readln;
    End.

Discussions similaires

  1. Générer un nombre entier aléatoire entre deux bornes
    Par zozoman dans le forum Débuter
    Réponses: 6
    Dernier message: 28/02/2012, 13h31
  2. Générer des nombres entiers de manière aléatoire
    Par stefsas dans le forum SAS Base
    Réponses: 2
    Dernier message: 12/09/2008, 10h55
  3. Réponses: 3
    Dernier message: 08/03/2008, 11h01
  4. Comment générer des nombres reéls aléatoires ?
    Par rzmadjid dans le forum Langage
    Réponses: 16
    Dernier message: 21/02/2008, 17h14
  5. Charger et générer des nombres dans un tableau
    Par virtuadrack dans le forum C
    Réponses: 7
    Dernier message: 30/03/2007, 16h35

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