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 :

[TP] Saisir un tableau dont les éléments sont différents un à un


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Par défaut [TP] Saisir un tableau dont les éléments sont différents un à un
    voila ce que j'ai fait
    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 saisie(n1:integer;var a:tab);
    var i,j:integer;
        v:boolean;
    begin
    v:=false;
     for i:=1 to n1 do
     begin
      repeat
       write('donner l''élement num ',i,' du tableau: ');
       readln(a[i]);
        for j:=1 to n1 do
         if a[j]=a[i] then
          v:=true;
      until v=false;
      end;
    end;
    je crois que mon erreur est avec la variable booleénne,mais j'ai pa su la corriger.
    Si vous pouvez m'aidez ca serait super!!

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Qio,

    - Il faudrait lire une valeur, sans la mettre dans le tableau,

    - Puis, vérifier si elle est déjà là.

    - Si elle y est déjà, on l'ignore, sinon on l'ajoute au tableau.


    Cela montre déjà qu'une boucle for n'est pas adaptée, il faut une boucle repeat, car on va y passer au moins une fois.

    Je te conseille de faire une fonction pour contrôler si une valeur est déjà dans le tableau

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Par défaut
    mais si je fais une boucle repeat,comment je fais pour controler toutes les valeurs du tableuax?Je ve dire comment faire pour voir si cet éléments n'existe pas dans tout le tableux?
    Ne faut-il pas utiliser for pour le parcourir?

  4. #4
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    bonjour
    si tu pose cette question c'est que tu n'a pas encore compris comment on utilise une boucle repeat qui dans ton cas est plus optimal sinon t'aurais pu utiliser une boucle while(pas optimal dans ton cas)
    s'il s'agit de voir si l'element entré est dans le tableau ,avec la boucle repeat tu parcours ton tableau jusqu'a rencontrer ta valeur et une fois ta valeur rencontré tu sors de la boucle pour eviter une perte de temps
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
         ..........
                   ....................
                   .............
             i:=1;
             repeat
                  tableau[i]:=i;
                  ..............
                  .................
                  inc(i);
             until (i=5);
    c'est bien l'algo que droggo à ecrit? je trouve que dans ta fonction il y ' a pas tout ça.
    as tu compris pourquoi une boucle for n'est pas adapté?
    @+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Par défaut
    Citation Envoyé par krachik
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
         ..........
                   ....................
                   .............
             i:=1;
             repeat
                  tableau[i]:=i;
                  ..............
                  .................
                  inc(i);
             until (i=5);
    J'ai vraiment pas compris le role de ce que tu as écris!!
    La tu n'es pa entrain de verifier si l'élément i est égale ou nom a l'indice i lui meme? (tableau[i]:=i??

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hio,

    En gros (suffisamment détaillé, tu n'as plus qu'à coder ) :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    { le tableau a des indices de 1 à n1 }
    - Initialiser i = 0
    
    - répéter
    .    lire valeur
    .    contrôler si valeur existe déjà
    .      si elle n'existe pas
    .        incrémenter i, qui sera l'indice où stocker la nouvelle valeur
    .        mettre la valeur à sa place
    - jusqu'à i = n1

Discussions similaires

  1. Tableau dont les éléments sont des tableaux
    Par tpdm dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/01/2010, 19h02
  2. Réponses: 12
    Dernier message: 15/07/2009, 17h28
  3. Réponses: 5
    Dernier message: 08/04/2009, 12h15
  4. E-Mail dont les éléments sont fonction d'une variable
    Par j.p.mignot dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/01/2008, 18h52
  5. Réponses: 3
    Dernier message: 20/08/2007, 17h30

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