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

Algorithmes et structures de données Discussion :

Algotithme affichage


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 59
    Par défaut Algotithme affichage
    Bonjour voici un petit exo assez simple mais où je bloque sur une partie:

    DEBUT
    A,B,C,D : entiers

    A<--- 7
    B<--- 10
    C<--- -6
    D<--- 32

    SI NON (A<B ET C>D) ET (A<D OU NON (B<C) ) ALORS
    AFFICHER " C'est vrai ! "
    SINON
    AFFICHER " C'est faux ! "
    FINSI
    FIN



    On me demande : - Indiquez quel message sera affiché par l'Algo ?
    - Expliquer par les Tables de Vérité ?

    Moi j'ai d'abord simplifié l'expressio ainsi on a :

    SI ( A>=B OU C<=D) ET ( A<D OU B>= C )

    Donc en remplaçant par les chiffres

    SI ( 7>=10 OU -6<=32 ) ET ( 7<32 OU 10>= -6 )

    A mon avis l'Algo va afficher c'est vrai même si 7>=10 est faux puisque on a OU dans la première parenthèse; -6<=32 est vrai ; 7<32 vrai ; 10>=-6 est vrai .
    Donc ça marche.

    Pour les Tables de Vérité j'ai un peu de mal à le modéliser.

    Merci de votre aide.

  2. #2
    Membre expérimenté Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Par défaut
    bah y'a quatre bits en entrée de table, b1, b2, b3, b4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    b1 = A < B
    b2 = C > D
    b3 = A < D
    b4 = B < C
    et ton expression logique est

    (b1.b2).(b3+b4)
    où j'ai mis la barre de négation en dessous parce qu'on fait comme on peut

    et ensuite, tu fais une table de vérités à 16 cases 4 * 4 (2 bits de chaque côté, prenant entre 00 et 11 comme valeurs)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 59
    Par défaut
    J'ai essayé en faisant:


    00 01 10 11
    00

    01

    10

    11

    J'ai développé l'expression b1(barre) + b2(barre) ) * ( b3 + b4)

    Ensuite j'ai fait la distributivité, mais je tourne en rond avec le tableau j'ai l'impression que cette aproche mathématique est fausse.
    Si tu peux me dire comment tu as fais pour le justifier en m'expliquant précisemment ton raisonnement ce serait vraiment sympas.

    Encore merci

  4. #4
    Membre expérimenté Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Par défaut
    ben euh je sais pas, y'a rien à montrer et pas d'approche mathématique ! quand tu as une expression booléenne sur n variables, tu peux faire une table de vérité à 2^n entrées, c'est enfantin, il suffit de calculer ce que vaut la fonction pour toutes les possibilités de valeurs des n variables.
    Ensuite, normalement, on s'en sert pour faire des tableaux de Karnaugh et simplifier l'expression, s'il faut réaliser le circuit logique correspondant avec le moins de portes possibles. Dans ton cas, je vois pas trop à quoi ça sert, à part à regarder dans la table que tu ne t'es pas trompé.. mais puisque c'est demandé dans l'énoncé.

    La table vaut (j'écris les entrées en une seule ligne b1b2b3b4 en binaire normal de 0000 à 1111) sauf erreur:

    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
     
    0000 1
    0001 0
    0010 1
    0011 1
    0100 1
    0101 0
    0110 1
    0111 1
    1000 1
    1001 0
    1010 1
    1011 1
    1100 0
    1101 0
    1110 0
    1111 0
    elle est simple à remplir il faut pas que b1b2=11 ou que b3b4=01.

    si tu veux vraiment simplifier l'expression, bah, je sais pas, elle l'est déjà, puisque chaque variable n'apparait qu'une fois ; ca dépend si tu cherches une forme normale (conjonctive ou disjonctive) ou si celle ci te convient. A noter qu'ici la forme normale disjonctive est évidente

    b1.b3+b1.b4+b2.b3+b2.b4

    et la conjonctive aussi

    (b1+b2).(b3+b4)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 59
    Par défaut
    A quoi correspondent les valeurs à droite du tableau ?

    ( je crois que tu l'as pas mis dans ton énoncé )

  6. #6
    Membre expérimenté Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Par défaut
    ....
    ton expression booléenne c'est comme une fonction f(b1,b2,b3,b4). ben j'écris les valeurs de f pour toutes les valeurs de b1, b2, b3, b4 voilà.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 59
    Par défaut
    Je viens de trouver les mêmes valeures que dans ton tableau en refaisant étape par étape, le seul hic et après je te laisserai tranquille c'est comment tu as fait pour trouver la forme disjonctive évidente, j'ai entouré les possibilités admettant comme valeure : 1 en me référant au Tableau mais j'arrive pas à simplifier.

    Je dois mal m'y prendre.

    Encore merci, en n'espérant ne pas t'embêter.

    Merci beaucoup .

  8. #8
    Membre expérimenté Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Par défaut
    soit j'utilise De Morgan pour écrire la forme normale conjonctive, et ensuite je distribue, et comme les variables n'apparaissent qu'une fois j'obtiens directement la forme normale disjonctive (c'est pour ça que je disais 'évidente', parce qu'il n'y a aucune simplification à faire contrairement au cas plus général)

    sinon, en général, il faut construire un tableau de Karnaugh et regrouper les paquets de 1 dans le tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    b1b2 à gauche, b3b4 en haut
     
          00   01   11   10
    00   1     0     1     1
    01   1     0     1     1
    11   0     0     0     0
    10   1     0     1     1
    attention à l'ordre 00 01 11 10, c'est plus du binaire, c'est du binaire réfléchi, pour qu'un seul bit au plus change à chaque fois.

    et on regroupe les 1 adjacents (y compris d'un côté à l'autre du tableau) par paquets de 4, comme en haut à droite, c'est un paquet qui vaut b1b3 par exemple ! Ici, on doit faire 4 paquets différents.
    ensuite, on met des + entre et on obtient la forme normale disjonctive.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 59
    Par défaut
    Merci beaucoup Steki

  10. #10
    Membre expérimenté Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Par défaut
    Citation Envoyé par LaToine
    Merci beaucoup Steki
    どういたしまして。

    mais n'oublie pas le "résolu"

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 59
    Par défaut
    Mais dans la présentation de l'exo, c'est préférable de faire directement un Tableau de Karnaugh ou pas ?

  12. #12
    Membre expérimenté Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Par défaut
    bah je sais pas, ça dépend à quel niveau tu es, ce qui est demandé, tout ça. A priori, il n'est demandé que 'les tables de Vérité'. Déjà pour moi, y'en a qu'une de table mais bon...

    le tableau de karnaugh il est pas nécessaire ici, puisqu'on obtient la forme normale par simple calcul.

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  2. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00
  3. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  4. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

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