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 :

Tri d'un tableau et vérification que les valeurs sont consécutives


Sujet :

Pascal

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut Tri d'un tableau et vérification que les valeurs sont consécutives
    Bonjour tout le monde;

    je viens solliciter votre aide concernant mon prog qui permet d'entrer des valeurs (entiers) dans un tableau, puis le trier, ensuite dire si ces valeurs sont consécutives ou pas; mais le problème est que ce dernier, quand je l'exécute, des fois il apparaît juste, et la plus part du temps non, surtout quand je tape une valeur négative ou un 0.

    Pour consécutif ou pas, j'ai utilisé un flag mais ce flag ne marche pas, car il mentionne toujours que les valeurs ne sont pas consécutives, aidez-moi s'il vous plait.



    Voici mon progr :
    Code pascal : 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 t1;
    const n=5;
    var truc:array[0..n] of integer;
        x,i,j,posmin:integer;
        cons:boolean;
     
    begin
      for i:=0 to n do
      begin
        writeln('entrez un valeur:',i);
        read(truc[i]);
      end;
      for i:=0 to n do
      begin
        posmin:=i;
        for j:=i+1 to n do
        begin
          if truc[j]<truc[i] then
            posmin:=j;
        end;
        x:=truc[posmin];
        truc[posmin]:=truc[j];
        truc[j]:=truc[i];
        truc[i]:=x;
      end;
      for i:=0 to n do
      begin
        write(truc[i],' ');
      end;
      cons:=true;
      for i:=0 to n do
      begin
        if truc[i+1]<>truc[i]+1 then
          cons:=false;
      end;
      if cons=true then
        write('les nombres sont tous cons‚cutifs')
      else
        writeln('les nombres ne sont pas tous cons‚cutifs');
    end.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Points : 770
    Points
    770
    Par défaut
    rapidement survolé,

    1ere remarque: utilise des procédures et des fonctions, ça aide à s'y retrouver

    2eme remarque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i:=0 to n do
      begin
        if truc[i+1]<>truc[i]+1 then
          cons:=false;
      end;
    ton "cons" ne sera jamais true étant donné que quand i=n tu compares truc[n+1] (qui n'existe pas) et truc[n] + 1
    ★ Pascal/Java/C/xhtml,css/SQL/Mips
    ★ Linux/unix

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut tableaux: probème 5% résolut.
    bonjour à vous , merci pour votre aide, pour les fonctions et procédures je n'ultise pas encore, etape par étape (je veux apprendre de la base.......à...).
    grace à vous j'ai trouver ma bétise, je suis trés contente, vous m'avez pas donnez la solu, mais juste vos remarques. et j'ai changer mon code comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i:=n downto 1 do
      begin
        if truc[i]<>truc[(i-1)]+1 then
          cons:=false;
      end;
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i:=1 to n do
      begin
        if truc[i]<>truc[(i-1)]+1 then
          cons:=false;
      end;
    50% de mon problème est réglé, mais pour mon code je crois qu'il est juste, mais son execution défois juste et défois fausse pourquoi?
    une autre question s'il vus plait: je peut utilsé n comme l'indice dernier d'un tableau, mais ce n je le précise en exectoin, ex:
    write('entrez le nombre des valeurs dans ce tab');
    read(n);
    existe t'il un moyen de faire ça , dans l'algo, il y'a la fonction redim, et pour le pascal il ya quoi?
    mes respects

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 941
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 941
    Points : 5 652
    Points
    5 652
    Par défaut
    Gie,
    Citation Envoyé par secondechance Voir le message
    bonjour à vous , merci pour votre aide, pour les fonctions et procédures je n'ultise pas encore, etape par étape (je veux apprendre de la base.......à...).
    C'est pour l'école ou une formation personnelle ?

    Si c'est personnel, mets-toi le plus rapidement possible aux fonctions et procédures, ça te permettra de faire des programmes plus clairs et faciles à lire/modifier.
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 930
    Points : 59 398
    Points
    59 398
    Billets dans le blog
    2
    Par défaut
    Bonjour !
    Citation Envoyé par secondechance Voir le message
    50% de mon problème est réglé, mais pour mon code je crois qu'il est juste, mais son execution défois juste et défois fausse pourquoi?
    J'ai testé et c'est ton tri qui ne fonctionne pas très bien.
    En fait, tu échanges Truc[ i ] et Truc[ j ] même si Truc[ i ] est déjà le plus petit élément (j valant n dans ce cas).
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut ça j'ai pas compris...
    bonjour à vous, merci de vos réponse
    une question c'est facile les fonctions et procedures? aujourd'huit je vais les entamer, vous m'encourager à le faire, merci.
    mais comment je change truc[i] avec truc[j], alors le if fait quoi ici.
    là j'ai pas bien compris? s'il vous plait expliquez moi bien votre remarque....., parce que là je ne comprend rien...
    mes respects

  7. #7
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 930
    Points : 59 398
    Points
    59 398
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par secondechance Voir le message
    mais comment je change truc[i] avec truc[j], alors le if fait quoi ici.
    là j'ai pas bien compris? s'il vous plait expliquez moi bien votre remarque....., parce que là je ne comprend rien...
    mes respects
    Dans le principe de ton tri, tu parcours ton tableau de manière que, si un élément Truc[ j ] est plus petit que Truc[ i ], tu les échanges. Si Truc[ i ] est déjà le plus petit élément, il faut bien le laisser en place; or, lorsque tu arrives à la fin de ta boucle de parcours, tu échanges quand même Truc[ i ] avec le dernier élément Truc[ j ] (avec j qui vaut n).

    J'espère que c'est plus clair comme ceci ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut
    bonjour
    oui, j'ai compris, j'ai réglé le problème comme suit:
    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
     
    for i:=0 to n do
      begin
        posmin:=i;
        for j:=i+1 to n do
        begin
          if truc[j]<truc[i] then
            begin
              posmin:=j;
              x:=truc[posmin];
              truc[posmin]:=truc[j];
              truc[j]:=truc[i];
              truc[i]:=x;
           end;
      end;
    end;
    il falut que dans le programme, si truc[j]<truc[i] il permute, ou bien il passe à j suivant,
    mes remerciments

Discussions similaires

  1. Vérification que les champs user et mdp ne sont pas vides avant submit
    Par LilliBrei dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/06/2014, 09h11
  2. Réponses: 5
    Dernier message: 19/05/2010, 11h10
  3. sélectionner que les valeurs numériques
    Par cyberboy00 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/04/2008, 16h42
  4. Réponses: 1
    Dernier message: 13/01/2008, 22h02
  5. faire une requete qui ne sort que les valeurs d'un champ coché
    Par joseph.breham dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/12/2006, 17h01

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