diff --git a/Programmation/Exercices/serie_01.pdf b/Programmation/Exercices/serie_01.pdf index 79ae31185c55d6380a160981d014c7e6da88c986..dae7f7edbbe5bd67fc8891c7173f173c9d46c008 100644 Binary files a/Programmation/Exercices/serie_01.pdf and b/Programmation/Exercices/serie_01.pdf differ diff --git a/Programmation/Exercices/serie_02.md b/Programmation/Exercices/serie_02.md index 38c45a2db5e92d931ca818437a4ac30652583d32..d1b97b93f90cd9f936cb67236bed55224c7440bd 100644 --- a/Programmation/Exercices/serie_02.md +++ b/Programmation/Exercices/serie_02.md @@ -60,10 +60,17 @@ A la compilation il faut également ajouter le flag `-lm` pour générer correct petit que zéro ou plus grand que le nombre maximal autorisé. Si un de ces deux cas se présente, le programme affichera un message d'avertissement à l'utilisateur·trice[^1] afin de lui rappeler les règles. -- Chercher le moyen de trouver le nombre caché de manière optimale en moyenne. -- Afficher en fin de partie le nombre de coups mis par le joueur pour découvrir le nombre secret, ainsi que le nombre de coups optimal maximal théorique permettant de déterminer le nombre secret. +- Afficher en fin de partie le nombre de coups mis par le joueur pour découvrir le nombre secret -# Exercice supplémentaire +# Partie bonus + +Cette partie n'est pas obligatoire. Vous pouvez la faire si vous souhaitez aller plus loin. + +## Nombre de coup optimal + +Chercher le moyen de trouver le nombre caché de manière optimale en moyenne. Afficher le nombre de coups optimal maximal théorique permettant de déterminer le nombre secret. + +## L'ordinateur joue contre l'utilisateur Une fois ce qui précède terminé, échangez les rôles! @@ -71,7 +78,7 @@ Une fois ce qui précède terminé, échangez les rôles! rôles. Afin de signifier à l'ordinateur que le nombre est plus grand ou plus petit, l'utilisateur·trice rentre `<` ou `>` respectivement et `=` en cas de victoire de l'ordinateur (il se pourrait que le type `char` vous soit utile). -Implémentez différentes stratégies pour l'ordinateur (recherche +Implémenter différentes stratégies pour l'ordinateur (recherche exhaustive, bisection, etc.). [^1]: Par exemple: "Vous devez entrer un nombre plus grand ou égal à zéro." ou "Vous devez entrer un nombre plus petit que 'max'.". diff --git a/Programmation/Exercices/serie_02.pdf b/Programmation/Exercices/serie_02.pdf index 7e9f2ad878ce9880ff938e93b5e81a5b6dbc6edf..4bd3675c238905bd25d7154d3d02fbc25c1380f2 100644 Binary files a/Programmation/Exercices/serie_02.pdf and b/Programmation/Exercices/serie_02.pdf differ diff --git a/Programmation/Exercices/serie_03.md b/Programmation/Exercices/serie_03.md index 71ae7ac9df4bb6719ec0de87d58f02f9bf8fa339..10856f315d9c4eff5cb1e2f918ec9d2b1c9fb5a5 100644 --- a/Programmation/Exercices/serie_03.md +++ b/Programmation/Exercices/serie_03.md @@ -8,10 +8,10 @@ date: 27.09.2022 - Utilisation de boucles, tests et nombres aléatoires -# 1 - Estimation de $\pi$ à l'aide de séries numériques +# Estimation de $\pi$ à l'aide de séries numériques Ecrire un programme qui calcule différentes approximations de la valeur de $\pi$ en vous servant des formules -ci-dessous. La constante `M_PI` est déclaré dans le header `<math.h>`, utiliser cette valeur comme référence pour estrimer l'erreur +ci-dessous. La constante `M_PI` est déclaré dans le header `<math.h>`, utiliser cette valeur comme référence pour estimer l'erreur dans les approximations. ## Formules @@ -34,7 +34,11 @@ Pour exécuter votre programme, vous aurez besoin de la librairie `math` : Vous aurez également besoin des fonctions `pow` et `sqrt`. Utiliser `man 3 pow` et `man 3 sqrt` pour obtenir la documentation de ces fonctions. -# 2 - Estimation de $\pi$ par la méthode de Monte-Carlo +# Partie bonus + +Cette partie n'est pas obligatoire. Vous pouvez la faire si vous souhaitez aller plus loin. + +## Estimation de $\pi$ par la méthode de Monte-Carlo Considérons le carré $C = [-1, 1] x [-1, 1]$. Si on tire une probabilité uniforme un point (x, y), quelle est la probabilité que ce point tombe dans le disque $D$ de rayon 1 centré en (0, 0) ? Cette probabilité est en fait diff --git a/Programmation/Exercices/serie_03.pdf b/Programmation/Exercices/serie_03.pdf index 983b934236792b647cde709533a66c5ad7eb001e..a22e209464607d1780e1815225b0ef034cf5ddba 100644 Binary files a/Programmation/Exercices/serie_03.pdf and b/Programmation/Exercices/serie_03.pdf differ diff --git a/Programmation/Exercices/serie_04.md b/Programmation/Exercices/serie_04.md index 40d2072c5a14993e7c91387e7dd9ee71c24b3f01..9425e970fb7259dfbed246eea439ff5545c8d43f 100644 --- a/Programmation/Exercices/serie_04.md +++ b/Programmation/Exercices/serie_04.md @@ -8,6 +8,7 @@ date: 04.10.2022 - Utilisation de tableaux statiques unidimensionnels. - Utilisation de fonctions. +- Implémentation d'un algorithme de tri. # Énoncé @@ -29,13 +30,19 @@ int tab[size]; 4. Trouver le plus petit élément de `tab`{.C}. 5. Rechercher dans `tab`{.C} un élément entré au clavier par l'utilisateur et afficher l'indice de la première occurrence. 6. Calculer la moyenne des éléments de `tab`{.C}. -7. Calculer la variance des éléments de `tab`{.C}. La variance `var`{.C} des éléments de `tab`{.C} est définie par la formule: +7. Trier les éléments de `tab`{.C} par ordre croissant selon l'algorithme vu en cours (tri par sélection). +8. Écrire une fonction pour chacun des points précédents. + +# Partie bonus + +Cette partie n'est pas obligatoire. Vous pouvez la faire si vous souhaitez aller plus loin. + +9. Calculer la variance des éléments de `tab`{.C}. La variance `var`{.C} des éléments de `tab`{.C} est définie par la formule: $$ \mathrm{var}=\frac{1}{\mathrm{size}}\sum_{i=0}^{\mathrm{size}-1}(\mathrm{tab}[i]-\mathrm{tab}_m)^2, $$ où $\mathrm{tab}_m$ désigne la moyenne des éléments de `tab`{.C} et $\mathrm{tab}[i]$ est le $i$-ème élément de `tab`{.C}. -8. Trier les éléments de `tab`{.C} par ordre croissant selon l'algorithme vu en cours (tri par sélection). -9. Trouver l'élément médian du tableau `tab`{.C}. Après avoir trié le tableau `tab`{.C}, l'élément médian est défini comme étant la valeur: +10. Trouver l'élément médian du tableau `tab`{.C}. Après avoir trié le tableau `tab`{.C}, l'élément médian est défini comme étant la valeur: - `tab[(size-1)/2]`{.C} si `size`{.C} est impair - `(tab[(size-1)/2] + tab[size/2])/2.0`{.C} si `size`{.C} est pair. @@ -48,7 +55,7 @@ où $\mathrm{tab}_m$ désigne la moyenne des éléments de `tab`{.C} et $\mathrm : L'élément médian de ce tableau vaut: 3. -10. Écrire une fonction pour chacun des points précédents. + 11. Vérifier que le générateur de nombres aléatoires `rand()`{.C} est équitable. Pour cela, utiliser un tableau d'entiers `histo`{.C} pour comptabiliser le diff --git a/Programmation/Exercices/serie_04.pdf b/Programmation/Exercices/serie_04.pdf index c1a8b4a62b5e4723956e125e2c8f6b55713fcc8c..b85b2936c54524ece2455fcad8cc9b3355046817 100644 Binary files a/Programmation/Exercices/serie_04.pdf and b/Programmation/Exercices/serie_04.pdf differ diff --git a/Programmation/Exercices/serie_05.md b/Programmation/Exercices/serie_05.md index 53c955a1f340319fe0c8158ea845d7a8ec3cb6f1..d3c1b3aacaef178bedef50a99abf6d2ac08f98b5 100644 --- a/Programmation/Exercices/serie_05.md +++ b/Programmation/Exercices/serie_05.md @@ -36,11 +36,15 @@ A . * . . . * . . Décomposez la résolution du problème en plusieurs fonctions. Par exemple, faites une fonction pour l'affichage du tableau. -# Le problème des 8 reines (pour les plus avancés) +# Partie bonus + +Cette partie n'est pas obligatoire. Vous pouvez la faire si vous souhaitez aller plus loin. + +## Le problème des 8 reines (pour les plus avancés) A partir de la position d'une reine, le programme doit trouver où placer 7 autres reines sur l'échiquier sans qu'elles ne se menacent mutuellement. -# Le problème des N reines +## Le problème des N reines Pour aller plus loin, réfléchissez à un algorithme permettant de gérer le cas général de N reines sur un échiquier de N cases de côté. Peut-on réger 1000, 10000, 100000 reines ? diff --git a/Programmation/Exercices/serie_05.pdf b/Programmation/Exercices/serie_05.pdf index 33caab9ab2d4cca6cedcec3b9215eb4410cba429..717eeda59fdabfbfa18d9bd434183e13a43dfe69 100644 Binary files a/Programmation/Exercices/serie_05.pdf and b/Programmation/Exercices/serie_05.pdf differ