Archives de l’auteur : pedago

Révisions de C et C++

Langage C

Exercice 1

Solution

Exercice 2

Solution

Introduction aux exercices suivants

Exercice 3

Solution

Exercice 4

Indice

Solution

Exercice 5

Solution

Introduction aux exercices suivants

Exercice 6

Indice

Solution

Exercice 7

Indice

Solution

Langage C++

Exercice 8

Solution

Exercice 9

Solution

Exercice 10

Indice 1

Solution

PROLOG : exercices sur les listes (avec arithmétique)

Exercice d’assimilation

Indice 1

Indice 2

Solution

Exercice d’assimilation

Indice 1

Indice 2

Solution

Exercice d’assimilation

Indice 1

Indice 2

Solution 1 (sans coups choix)

Solution 2 (avec coupe choix)

Exercice d’assimilation

Indice 1

Indice 2

Indice 3

Solution

Exercice de consolidation

Indice 1

Indice 2

Solution

Exercice de consolidation

Indice 1

Indice 2

Solution

Introduction à PROLOG : faits,clauses et prédicats

Faits et buts

Exercice introductif

Solution

Requêtes sous forme de buts

Exercice introductif

Solution

Clauses

Exercice introductif

Solution

Prédicat défini par plusieurs clauses

Exercice introductif

Solution

Entrées et de sorties

Exercice introductif

Solution

Principe d’évaluation

Exercice introductif

Solution

Récursivité

Exercice introductif

Solution

Négation et jockers

Exercice introductif

Solution

Classes ramifiées en C++

Qu’est ce qu’une classe ramifiée ?

Exercice introductif IP1

Réponse

Constructeur et destructeur

Exercice introductif IP2

Réponse

Cycle de vie d’une instance

Exercice introductif IP3

Réponse

Problème de la copie superficielle

Exercice introductif IP4

Réponse

Redéfinir l’opérateur d’assignation

Exercice introductif IP5

Réponse

Redéfinir le constructeur en copie

Exercice introductif IP6

Réponse

CC2 des M2 BDIA

Documents autorisés : une feuille A4 recto-verso pour chacune de parties A, B, C, D, manuscrite ou imprimée.

Partie A

A1 (1 point)

Donnez les solutions, si applicable, du réseau de contraintes suivant :

Variables : \(A, C\) de domaine \(\{1,2,3\}\), \(B,D\) de domaine \(\{4,5,6\}\).

Contraintes :

  • Sur \(A,B\) : \(\{(1,5),(2,6),(3,4)\}\).
  • Sur \(B,C\) : \(\{(4,2),(5,3),(6,1)\}\).
  • Sur \(C,D\) : \(\{(1,5),(2,6),(3,4),(3,6)\}\).
  • Sur \(A,D\) : \(\{(1,6),(2,4),(3,5)\}\).

"Solution"

Une solution : \(A=1, B=5, C=3, D=6\).

A2 (1 point)

Donnez la spécification en extension de la contrainte logique \(A\vee \neg B \vee C\).

"Solution"

Sur \(A,B,C\) : \(\{(0,0,0),(0,0,1),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)\}\).

Partie B

Soit \(V\) un ensemble de variables, \(q\) une contrainte reliant les variables de \(V\) et un ensemble \(Q\) de contraintes tel que les variables reliées par chaque contrainte de \(Q\) appartiennent à \(V\).

On dit que \(Q\) est équivalent à \(q\) si et seulement si toute assignation complète des variables de \(V\) satisfait toutes les contraintes de \(Q\) si et seulement si elle satisfait \(q\).

Par exemple, l’ensemble de contraintes \(Q = \{A\neq B, A\neq C, B\neq C\}\) est équivalent à la contrainte \(q = \text{allDiff}(A,B,C)\).

On appelle contrainte logique toute contrainte spécifiée en compréhension uniquement à l’aide des opérateurs \(\vee, \wedge, \neg\).

Dans les questions suivantes, il sera uniquement question de variables Booléennes, donc à domaine \(\{0,1\}\).

B1 (1 point)

Donnez un ensemble de contraintes logiques équivalent à la contrainte \(X_1+…+X_N \neq 0\). Cet ensemble peut ne contenir qu’une seule contrainte.

"Solution"

\(X_1\vee…\vee X_N\)

B2 (1 point)

Donnez un ensemble de contraintes logiques aussi petit que possible équivalent à la contrainte \(A+B+C+D \leq 2\).

"Solution"

\((\neg A \vee \neg B \vee \neg C)\), \((\neg A \vee \neg B \vee \neg D)\), \((\neg A \vee \neg C \vee \neg D)\), \((\neg B \vee \neg C \vee \neg D)\)

B3 (2 points)

Donnez un ensemble de contraintes logiques aussi petit que possible équivalent à la contrainte \(X_1+…+X_N \leq 1\), pour tout entier \(N\) supérieur à 1.

"Solution"

\(\forall i \in 1..N, \forall j \in i+1..N, (\neg X_i \vee \neg X_j)\)

Partie C

Pour chacune des questions, vous devez répondre en donnant, dans un ordre plausible, les valeurs retirées lors de la restauration de la cohérence de domaines du réseau de contraintes ou de la contrainte donnée dans l’énoncé. Aucune justification n’est demandée. Vous devez juste donner, à raison d’une ligne par visite d’une contrainte, la liste des valeurs retirées en utilisant la notation \(V\neq x\) pour dire que la valeur \(x\) est retirée du domaine de \(V\).

Par exemple pour décrire le filtrage du réseau \(q_1 : A<B\), \(q_2 : B<C\) où \(A, B, C\) ont pour domaine \(\{1,2,3\}\), vous devez adopter la présentation suivante :

  • \(q_1\) : \(A\neq 3, B\neq 1\)
  • \(q_2\) : \(B\neq 3, C\neq 1, C\neq 2\)
  • \(q_1\) : \(A\neq 2\)

C1 (2points)

Restaurez la cohérence de domaine du réseau de contraintes suivant :

Variables : \(A\) de domaine \(\{1,2,3\}\), \(B\) de domaine \(\{4,5,6\}\), \(C\) de domaine \(\{7,8,9\}\).

Contraintes :

  • \(q_1\) sur \(A,B\) : \(\{(1,5),(2,4),(3,6)\}\)
  • \(q_2\) sur \(B,C\) : \(\{(4,8),(5,7),(6,8)\}\)
  • \(q_3\) sur \(A,C\) : \(\{(1,7),(2,8),(3,9)\}\)

"Solution"

  • \(q_2 : C\neq 9\)
  • \(q_3 : A\neq 3\)
  • \(q_1 : B \neq 6\)

C2 (2 points)

Restaurez la cohérence de domaine du réseau de contraintes suivant :

Variables : \(A,B,C\) de domaine \(\{1,2,3\}\).

Contraintes :

  • \(q_1\) : \(A+B+C=6\)
  • \(q_2\) : \(A+2B+C=9\)
  • \(q_3\) : \(2A+B+3C=10\)

"Solution"

  • \(q_2 : B\neq 1\)
  • \(q_3 : A\neq 3, C\neq 3\)
  • \(q_1 : A\neq 1\)
  • \(q_2 : B\neq 2, C \neq 2\)

Partie D

D1 (2 points)

Soit le réseau de contraintes suivant :

Variables : \(A,B,C,D\) ayant toutes pour domaine \(\{3,7,11\}\).

Contraintes :

  • \(A+B+C+D \leq 17\)
  • \(A+B+C+D \geq 17\)

Donnez l’arbre de recherche illustrant le déroulement de l’algorithme MAC sur ce réseau de contraintes. Précisez à chaque nœud les domaines des variables en barrant celles qui sont filtrées.

"Solution"

image-20211110102312984

CC2 des M2 BDIA avec corrigé

Documents autorisés : une feuille A4 recto-verso pour chacune de parties A, B, C, D, manuscrite ou imprimée.

Partie A

A1 (1 point)

Donnez les solutions, si applicable, du réseau de contraintes suivant :

Variables : \(A, C\) de domaine \(\{1,2,3\}\), \(B,D\) de domaine \(\{4,5,6\}\).

Contraintes :

  • Sur \(A,B\) : \(\{(1,5),(2,6),(3,4)\}\).
  • Sur \(B,C\) : \(\{(4,2),(5,3),(6,1)\}\).
  • Sur \(C,D\) : \(\{(1,5),(2,6),(3,4),(3,6)\}\).
  • Sur \(A,D\) : \(\{(1,6),(2,4),(3,5)\}\).

"Solution"

Une solution : \(A=1, B=5, C=3, D=6\).

A2 (1 point)

Donnez la spécification en extension de la contrainte logique \(A\vee \neg B \vee C\).

"Solution"

Sur \(A,B,C\) : \(\{(0,0,0),(0,0,1),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)\}\).

Partie B

Soit \(V\) un ensemble de variables, \(q\) une contrainte reliant les variables de \(V\) et un ensemble \(Q\) de contraintes tel que les variables reliées par chaque contrainte de \(Q\) appartiennent à \(V\).

On dit que \(Q\) est équivalent à \(q\) si et seulement si toute assignation complète des variables de \(V\) satisfait toutes les contraintes de \(Q\) si et seulement si elle satisfait \(q\).

Par exemple, l’ensemble de contraintes \(Q = \{A\neq B, A\neq C, B\neq C\}\) est équivalent à la contrainte \(q = \text{allDiff}(A,B,C)\).

On appelle contrainte logique toute contrainte spécifiée en compréhension uniquement à l’aide des opérateurs \(\vee, \wedge, \neg\).

Dans les questions suivantes, il sera uniquement question de variables Booléennes, donc à domaine \(\{0,1\}\).

B1 (1 point)

Donnez un ensemble de contraintes logiques équivalent à la contrainte \(X_1+…+X_N \neq 0\). Cet ensemble peut ne contenir qu’une seule contrainte.

"Solution"

\(X_1\vee…\vee X_N\)

B2 (1 point)

Donnez un ensemble de contraintes logiques aussi petit que possible équivalent à la contrainte \(A+B+C+D \leq 2\).

"Solution"

\((\neg A \vee \neg B \vee \neg C)\), \((\neg A \vee \neg B \vee \neg D)\), \((\neg A \vee \neg C \vee \neg D)\), \((\neg B \vee \neg C \vee \neg D)\)

B3 (2 points)

Donnez un ensemble de contraintes logiques aussi petit que possible équivalent à la contrainte \(X_1+…+X_N \leq 1\), pour tout entier \(N\) supérieur à 1.

"Solution"

\(\forall i \in 1..N, \forall j \in i+1..N, (\neg X_i \vee \neg X_j)\)

Partie C

Pour chacune des questions, vous devez répondre en donnant, dans un ordre plausible, les valeurs retirées lors de la restauration de la cohérence de domaines du réseau de contraintes ou de la contrainte donnée dans l’énoncé. Aucune justification n’est demandée. Vous devez juste donner, à raison d’une ligne par visite d’une contrainte, la liste des valeurs retirées en utilisant la notation \(V\neq x\) pour dire que la valeur \(x\) est retirée du domaine de \(V\).

Par exemple pour décrire le filtrage du réseau \(q_1 : A<B\), \(q_2 : B<C\) où \(A, B, C\) ont pour domaine \(\{1,2,3\}\), vous devez adopter la présentation suivante :

  • \(q_1\) : \(A\neq 3, B\neq 1\)
  • \(q_2\) : \(B\neq 3, C\neq 1, C\neq 2\)
  • \(q_1\) : \(A\neq 2\)

C1 (2points)

Restaurez la cohérence de domaine du réseau de contraintes suivant :

Variables : \(A\) de domaine \(\{1,2,3\}\), \(B\) de domaine \(\{4,5,6\}\), \(C\) de domaine \(\{7,8,9\}\).

Contraintes :

  • \(q_1\) sur \(A,B\) : \(\{(1,5),(2,4),(3,6)\}\)
  • \(q_2\) sur \(B,C\) : \(\{(4,8),(5,7),(6,8)\}\)
  • \(q_3\) sur \(A,C\) : \(\{(1,7),(2,8),(3,9)\}\)

"Solution"

  • \(q_2 : C\neq 9\)
  • \(q_3 : A\neq 3\)
  • \(q_1 : B \neq 6\)

C2 (2 points)

Restaurez la cohérence de domaine du réseau de contraintes suivant :

Variables : \(A,B,C\) de domaine \(\{1,2,3\}\).

Contraintes :

  • \(q_1\) : \(A+B+C=6\)
  • \(q_2\) : \(A+2B+C=9\)
  • \(q_3\) : \(2A+B+3C=10\)

"Solution"

  • \(q_2 : B\neq 1\)
  • \(q_3 : A\neq 3, C\neq 3\)
  • \(q_1 : A\neq 1\)
  • \(q_2 : B\neq 2, C \neq 2\)

Partie D

D1 (2 points)

Soit le réseau de contraintes suivant :

Variables : \(A,B,C,D\) ayant toutes pour domaine \(\{3,7,11\}\).

Contraintes :

  • \(A+B+C+D \leq 17\)
  • \(A+B+C+D \geq 17\)

Donnez l’arbre de recherche illustrant le déroulement de l’algorithme MAC sur ce réseau de contraintes. Précisez à chaque nœud les domaines des variables en barrant celles qui sont filtrées.

"Solution"

image-20211110102312984