diff --git a/test~coding~readingCppPrograms.fr/README.rst b/test~coding~readingCppPrograms.fr/README.rst index b0f6fc20850a492e1979deaafb01ac04cced742e..a0476e66c45371100f597b1591c4805d452213ff 100644 --- a/test~coding~readingCppPrograms.fr/README.rst +++ b/test~coding~readingCppPrograms.fr/README.rst @@ -28,7 +28,7 @@ Ce module est d Le répertoire `<data/>`_ contient des programmes C++, qui peuvent être de deux types. Pour les programmes du premier type, l'utilisateur doit deviner la sortie du programme. Ces programmes sont nommés sous la forme ``<theme>_<nom>.cpp``. -Les programme du decuième type doivent lire un entier entre +Les programme du deuxième type doivent lire un entier entre 0 et 99 sur l'entrée standard, et l'utilisateur doit deviner lequel donne 42; pour l'instant cet entier doit être unique. Ces programmes sont nommés ``<theme>_<nom>_input.cpp`` @@ -144,9 +144,9 @@ Pour installer des exercices OEF dans un module : 1. Créer un module de type OEF - 2. Pour chaque exercice, créer dans le module un nouveau fichier - d'extension oef dans le répertoire src/ (exemple : src/euclide.oef). - Une zone de texte apparaît ; y écrire (ou coller) le texte source + 2. Pour chaque exercice, créer dans le module un nouveau fichier + d'extension oef dans le répertoire src/ (exemple : src/euclide.oef). + Une zone de texte apparaît ; y écrire (ou coller) le texte source de l'exercice. Enregistrer les changements. 3. Tester le module. @@ -157,7 +157,7 @@ Pour installer des exercices OEF dans un module : %%%%%% Pour utiliser directement le module sur un serveur WIMS local, -1- Mettre le template à la bonne place, +1- Mettre le template à la bonne place, en changeant le nom. 2. Modifier intro.phtml @@ -167,6 +167,6 @@ en changeant le nom. 4. Installer les fichiers sources. 5. Exécuter le script $wims_home/other/bin/src2def. (Cette étape - doit être répétée à chaque fois que les fichiers sources sont modifiés). + doit être répétée à chaque fois que les fichiers sources sont modifiés). diff --git a/test~coding~readingCppPrograms.fr/data/struct_hard_1.cpp b/test~coding~readingCppPrograms.fr/data/struct_hard_1.cpp new file mode 100644 index 0000000000000000000000000000000000000000..711c15a3b60a195e4940a96200b21e2721fdcf25 --- /dev/null +++ b/test~coding~readingCppPrograms.fr/data/struct_hard_1.cpp @@ -0,0 +1,28 @@ +#include <iostream> + +using namespace std; + +struct obif { + int a; + int b; + int c; + int d; +}; + +obif step(obif m) { + obif nouveau; + nouveau.a = m.a*m.a + m.b*m.c; + nouveau.b = m.b * (m.a + m.d); + nouveau.c = m.c * (m.a + m.d); + nouveau.d = m.d*m.d + m.b*m.c; + return nouveau; +} + +int main() { + obif truc = {1, 1, 1, 0}; + for (int p = 3; p > -3; p = p-2) { + truc = step(truc); + } + cout << truc.b << endl; + return 0; +} diff --git a/test~coding~readingCppPrograms.fr/data/struct_hard_1_input.cpp b/test~coding~readingCppPrograms.fr/data/struct_hard_1_input.cpp new file mode 100644 index 0000000000000000000000000000000000000000..72f0c9ebe2e0041ac66e3b6b9b057014f5db94e1 --- /dev/null +++ b/test~coding~readingCppPrograms.fr/data/struct_hard_1_input.cpp @@ -0,0 +1,40 @@ +#include <iostream> + +using namespace std; + +struct cerise { + int queue; + int gauche; + int droite; +}; + +struct cerisier { + cerise cerise_gauche; + int top; + cerise cerise_droite; +}; + +void initialise_cerise(cerise &miam, int val) { + miam.queue = val; + miam.gauche = val - 1; + miam.droite = val + 1; +} + +void initialise_cerisier(cerisier &tree, int val) { + tree.top = val; + initialise_cerise(tree.cerise_gauche, val - 2); + initialise_cerise(tree.cerise_droite, val + 2); +} + +int somme_cerise(cerise miam) { + return miam.queue + miam.gauche + miam.droite; +} + +int main() { + int n; + cerisier tree; + cin >> n; + initialise_cerisier(tree, n); + cout << tree.top + somme_cerise(tree.cerise_gauche) + somme_cerise(tree.cerise_droite) << endl; + return 0; +} diff --git a/test~coding~readingCppPrograms.fr/data/struct_hard_2.cpp b/test~coding~readingCppPrograms.fr/data/struct_hard_2.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0f56b38cdc44ad2aaf491db69f651cae7258ef4d --- /dev/null +++ b/test~coding~readingCppPrograms.fr/data/struct_hard_2.cpp @@ -0,0 +1,33 @@ +#include <iostream> + +using namespace std; + +struct blob { + string nom; + int a; + int b; + int lg; + bool lock; +}; + +void swap(blob &x) { + char tmp; + tmp = x.nom[x.a]; + x.nom[x.a] = x.nom[x.b]; + x.nom[x.b] = tmp; + x.a = (x.a + x.b) % x.lg; + x.b = (x.a*x.b) % x.lg; + if (x.a == x.b) + x.lock = true; +} + +int main() { + blob truc = {"info121rocks", + 3, + 5, + 12, + false}; + while (!truc.lock) swap(truc); + cout << truc.nom << endl; + return 0; +}