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

Langage Pascal Discussion :

[LG]declaration ensemble et test d'inclusion


Sujet :

Langage Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [LG]declaration ensemble et test d'inclusion
    bonjour

    j'ai un petit problème avec des ensembles que je n'arrive pas à résoudre seul. c'est pourquoi je fais appel à votre aide après avoir essayé tout un tas de choses...

    je dois faire un test d'inclusion sur un ensemble de 7 valeurs tirées aléatoirement dans l'intervalle 1..500, ce qui me pose un problème de déclaration pour l'ensemble, le tout dans une boucle, ce qui m'empeche avec le peu de connaissances que j'ai en pascal de rentrer les valeurs avec des variables du type : val1..val7.

    si quelqu'un peut me dépanner, merci d'avance

  2. #2
    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
    Pour déclarer et définir un ensemble, on utilise des crochets [], avec les valeurs de l'ensemble entre les crochets et séparés par des virgules.
    Pour déclarer des types ensemble, on utilise le mot réservé Set :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    type minuscules=set of 'a'..'z';
    type majuscules=set of 'A'..'Z';
    Pour plus d'informations sur le mot Set, regarde l'aide de ton compilateur !
    Sinon pour ajouter une valeur à un ensemble, désolé je sais pas faire ...

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    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
    Voilà, j'ai trouvé Pour ajouter une valeur unique, à un ensemble il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    type digits=set of 0..9;
    var nombres:digits;
    begin
    nombres:=[1,3,5];
    nombres:=nombres+[7];
    nombres:=nombres+[9,11];
    readln;
    end.
    Donc on ne peut faire des opérations qu'entre ensembles... Si tu as une valeur unique, il faudra la convertir en ensemble en l'entourant de crochets !
    Pour tester l'inclusion d'une valeur dans l'ensemble, on utilise in :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nombres:=[1,4,9];
    if 5 in nombres then writeln('5 est dans l'ensemble') else writeln('5 n''est pas dans l'ensemble');
    Voilà !
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    merci pour la rapidité de la réponse !
    mais en fait je retombe sur mon problème...

    ce sera sans doute un peu plus clair avec du concret...
    en gros un individu doit en connaître strictement cinq autres parmi les 500
    possibles (ensuite ça sert à simuler des propriétés de diffusion dans un réseau social...)

    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
     
    const dim=500; 
            relmax=5;
    type valinterloc = set of 1..relmax;
    var val : valinterloc;
    interloc,nbrel : integer;
    test : boolean;
     
    begin
    randomize;
    val:=[];
    nbrel:=0;
    repeat
      repeat 
      interloc:=random(dim)+1;
      test:=not([interloc]<=val);
      until test=true;
    val:=val+[interloc];
    inc(nbrel);
    until nbrel=relmax;
    end.
    si j'utilise ce que tu m'as envoyé, toutes les valeurs d'interloc supérieures à 5 ne sont pas prises en compte par le test. or je ne peux pas déclarer mon ensemble comme un intervalle 1..500.
    j'imagine bien qu'on peut se contenter d'un double test if mais vu que je me creuse la tête depuis hier avec cette histoire d'ensemble, j'aimerais bien y arriver !!

    merci d'avance

  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
    Euh en réalité, le nombre d'élément dans l'ensemble doit être de 5 au plus... Pourquoi ne pas essayer :

    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
     
    const dimension=500; 
    const relationMax=5; 
    type Relations=set of 1..dimension; 
    var relation:Relations; 
    nombre,nRelation:integer; 
     
    begin 
    randomize; 
    relation:=[]; 
    nRelations:=0; 
    repeat 
      repeat 
      nombre:=random(dimension)+1; 
      until not nombre in relation;
    relation:=relation+[nombre]; 
    inc(nRelation); 
    until nRelation=relationMax; 
    end.
    Je pense que ca devrait faire à peu près ce qu'il faut...

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    ben oui j'ai essayé mais le problème c'est qu'un ensemble ne peut pas prendre plus de 256 combinaisons...
    donc il refuse cette déclaration...

  7. #7
    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
    Ahhh...
    Donc je crois qu'il faut que tu oublies le système des ensembles...
    Pourquoi ne pas utiliser un tableau plutôt qu'un ensemble ??

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    effectivement ça marche mieux comme ça
    en tous cas merci !

    +

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

Discussions similaires

  1. [Python 3.X] ensembles et test d'égalité
    Par bosskev62 dans le forum Général Python
    Réponses: 4
    Dernier message: 08/03/2015, 05h54
  2. Générer un ensemble de test
    Par tiouba dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/12/2007, 14h04
  3. Test sur un ensemble de chaîne
    Par ftoutin dans le forum Delphi
    Réponses: 8
    Dernier message: 31/01/2007, 16h55
  4. [Conception] Inclusion d'ensemble
    Par lanve dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/09/2006, 16h16
  5. Réponses: 9
    Dernier message: 02/06/2006, 09h45

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