--- jupytext: text_representation: extension: .md format_name: myst format_version: 0.13 kernelspec: display_name: C++17 language: C++17 name: xcpp17 --- +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "c8dce4e85941d516ab5cc4d12801504c", "grade": false, "grade_id": "cell-49fef9fe78b2c65a", "locked": true, "schema_version": 3, "solution": false}} # TP : tableaux 2D ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 672d3dbda55973af9935f27ad79ddc0a grade: false grade_id: cell-2567ccefc2e87875 locked: true schema_version: 3 solution: false --- #include <iostream> #include <vector> using namespace std; ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "dee5684749277fb063302880dfd95a30", "grade": false, "grade_id": "cell-c7d94e0bcb88916d", "locked": true, "schema_version": 3, "solution": false}} ## Exercice 1 : construction pas à pas d'un tableau 2D: les quatre étapes - Déclarer un tableau d'entiers `t` à deux dimensions; donc de type `vector<vector<int>>`: ```{code-cell} --- deletable: false nbgrader: cell_type: code checksum: c86e4c7a5d012c132c1277a95f90ba8e grade: false grade_id: cell-d8ced5bf77b8978e locked: false schema_version: 3 solution: true --- // REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "f08226158fdc07d1a6475caacca58730", "grade": false, "grade_id": "cell-da8fd6dd0f43ce24", "locked": true, "schema_version": 3, "solution": false}} - Remarquer qu'il est vide: ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 554d2b436b90fb927c1a455e533e12c1 grade: false grade_id: cell-3302ce096403f565 locked: true schema_version: 3 solution: false --- t ``` ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 3f1052c671c3ab1e84c025bdd73d7b6f grade: false grade_id: cell-d47219e64575717c locked: true schema_version: 3 solution: false --- t.size() ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "3658cb9e28ae8d4f42eb5c8e0b71ec10", "grade": false, "grade_id": "cell-b2ad1967e86c68c7", "locked": true, "schema_version": 3, "solution": false}} - On alloue `t` pour qu'il ait trois lignes: ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 89cf5a8db78609d1af70e5d14604281d grade: false grade_id: cell-0c5961ebe84ab65d locked: true schema_version: 3 solution: false --- t = vector<vector<int>>(3); ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "495cc86c033b37f19fac67cf6040398c", "grade": false, "grade_id": "cell-78c8cbf17b8f2706", "locked": true, "schema_version": 3, "solution": false}} - Vérifions que `t` a trois lignes vides: ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: edda7b81c2e4b87a56d5fde4b5a581e3 grade: false grade_id: cell-83759e626a55d7b4 locked: true schema_version: 3 solution: false --- t ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "f5be09a3034ed7db1896cb84733b86c8", "grade": false, "grade_id": "cell-b3ed557f6d73677a", "locked": true, "schema_version": 3, "solution": false}} - On alloue la première ligne pour qu'elle ait deux éléments ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: a6c346beb70dc128035355607db86467 grade: false grade_id: cell-c1fe4796c0b0b6e2 locked: true schema_version: 3 solution: false --- t[0] = vector<int>(2); ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "ebce5a1e30fefb2c820fe8bade8202fa", "grade": false, "grade_id": "cell-94417f9d100f7816", "locked": true, "schema_version": 3, "solution": false}} - Allouer de même les deux autres lignes: ```{code-cell} --- deletable: false nbgrader: cell_type: code checksum: 73e37aab96af9e8c75348e691b19545a grade: false grade_id: cell-d5059f8ea79f333d locked: false schema_version: 3 solution: true --- // REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "3394f27546d5ddbdfe85320baa79138b", "grade": false, "grade_id": "cell-4b45129d51f9a85d", "locked": true, "schema_version": 3, "solution": false}} - La valeur de quelle ligne et quelle colonne est elle changée par l'affectation suivante? ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: a76f8d9f59f7055445f047fb2a4323b1 grade: false grade_id: cell-a1b30da86e24ccdc locked: true schema_version: 3 solution: false --- t[0][1] = 1 ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "ba86b04a51c24f09906f10fff34c1db8", "grade": false, "grade_id": "cell-d67aac31a057050c", "locked": true, "schema_version": 3, "solution": false}} - Vérifier: ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 01847eb8b7e9acfadd405663e79d1edc grade: false grade_id: cell-a440b46422e51895 locked: true schema_version: 3 solution: false --- t ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "fae1377d731e163e1d645329a71cf1b2", "grade": false, "grade_id": "cell-3bc487275e9c04f1", "locked": true, "schema_version": 3, "solution": false}} - Mettre la valeur 42 en troisième ligne et première colonne ```{code-cell} --- deletable: false nbgrader: cell_type: code checksum: 0ea3a7574e12821018c516185403f43d grade: false grade_id: cell-108edeafacf3bf2a locked: false schema_version: 3 solution: true --- // REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "ca2d862c42886c3618c2ed85e5a3dc6a", "grade": false, "grade_id": "cell-21f981b08a878c4d", "locked": true, "schema_version": 3, "solution": false}} - Vérifier: ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 04169172b4f3ea600f6ebec4b835c49c grade: false grade_id: cell-f454609688f512a1 locked: true schema_version: 3 solution: false --- t ``` ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 51842d3ce6d164328a6788c427808029 grade: true grade_id: cell-533cddc9734026b0 locked: true points: 1 schema_version: 3 solution: false task: false --- CHECK( t[2][0] == 42 ); ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "b251d2c41cb1ecfa69d0b34602241725", "grade": false, "grade_id": "cell-ccaa9da2e9688a7a", "locked": true, "schema_version": 3, "solution": false, "task": false}} ## Digression : alignement vertical dans les affichages +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "350f8c749f700ffa2395f00d4c954f2a", "grade": false, "grade_id": "cell-7f2fc097b15e0c28", "locked": true, "schema_version": 3, "solution": false}} Pour afficher joliment un tableau, on doit gérer l'alignement vertical des colonnes. Cela peut se faire en `C++` avec `setw` qui réserve un certain nombre de caractères pour l'affichage d'un nombre. Pour utiliser `setw`, il faut au préalable charger la bibliothèque `iomanip`: ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 224d6f61ac0010ce734b5b4b5df1ab21 grade: false grade_id: cell-ebc1fcab989b602f locked: true schema_version: 3 solution: false task: false --- #include <iomanip> ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "e228d8f2f89ee5ef2b8274c1f4bd3349", "grade": false, "grade_id": "cell-1f7c930798717da4", "locked": true, "schema_version": 3, "solution": false, "task": false}} - Exécuter plusieurs fois le code suivant en variant le paramètre de `setw`: ```{code-cell} cout << "|" << setw(3) << 12 << "|" << endl; ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "3224d1c156920089ff42529b15048575", "grade": false, "grade_id": "cell-53def89c5c3c8061", "locked": true, "schema_version": 3, "solution": false, "task": false}} - Exécuter plusieurs fois le code suivant en variant le paramètre de `setw`: ```{code-cell} for ( int i = 0; i < 10; i++ ) { for ( int j = 0; j < 10; j++ ) cout << setw(3) << i + j << " "; cout << endl; } ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "3b7bee3d9f4233b9a61b1f7709cfc00e", "grade": false, "grade_id": "cell-7f2fc097b15e0c27", "locked": true, "schema_version": 3, "solution": false}} ## Exemple de construction et d'affichage d'un plus gros tableau 2D ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 01f38e63c00962743a44610c944ca52a grade: false grade_id: cell-4e524db141414a9d locked: true schema_version: 3 solution: false --- int L = 10; int C = 10; ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "43a80f6818f5944b811f0853cfb63d38", "grade": false, "grade_id": "cell-888210490a59804e", "locked": true, "schema_version": 3, "solution": false}} - Les cellules suivantes construisent un tableau à deux dimensions et l'affichent. Annoter chaque cellule avec un commentaire précisant quelle étape de la construction elle effectue (initialisation, allocation des lignes, déclaration, allocation; dans quel ordre?) +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "e79d11652e9042f53c3fbc5f41559679", "grade": true, "grade_id": "cell-98119b3d30ed0540", "locked": false, "points": 0, "schema_version": 3, "solution": true}} % REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: e7d165eeb949a9caf6965615f88cc269 grade: false grade_id: cell-a648420d522a3b1c locked: true schema_version: 3 solution: false --- vector<vector<int>> tableMultiplication; ``` +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "c2aeae3d0b0353be8eb3eed37c21a6ef", "grade": true, "grade_id": "cell-e9f33dc1f3766dee", "locked": false, "points": 0, "schema_version": 3, "solution": true}} % REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 55b8a2c286bc0c46893985e99b36997d grade: false grade_id: cell-1d0b9b36a23d8904 locked: true schema_version: 3 solution: false --- tableMultiplication = vector<vector<int>>(L); ``` +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "38a3d299caef55c818461852119f6d01", "grade": true, "grade_id": "cell-85e2f72b41250dda", "locked": false, "points": 0, "schema_version": 3, "solution": true}} % REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: f3f88883d553c60ccdfdf66a93373f5a grade: false grade_id: cell-4dd6126bbf0db299 locked: true schema_version: 3 solution: false --- for ( int i = 0; i < L; i++ ) { tableMultiplication[i] = vector<int>(C); } ``` +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "e1ca5282122ebddaed3be3d539e80ba7", "grade": true, "grade_id": "cell-55d9f39f6158d87b", "locked": false, "points": 0, "schema_version": 3, "solution": true}} % REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 844ac8de35727754bcddebfacd1dc8d8 grade: false grade_id: cell-b3d7a3efc7008ad7 locked: true schema_version: 3 solution: false --- for ( int i = 0; i < L; i++ ) { for ( int j = 0; j < C; j++ ) { tableMultiplication[i][j] = i * j; } } ``` ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 4b06ac74aa29a3c9b315102ee1c83fc5 grade: false grade_id: cell-fbee56c85ea3fae9 locked: true schema_version: 3 solution: false --- tableMultiplication[6][9] ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "cabaaba3d0a164335e863737760ed364", "grade": false, "grade_id": "cell-529023907bf92556", "locked": true, "schema_version": 3, "solution": false}} Affichage direct par Jupyter : ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 2349a8a57965980229c32691ffa56d89 grade: false grade_id: cell-527ef708f4aa8be7 locked: true schema_version: 3 solution: false --- tableMultiplication ``` +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "4fe4d0ee724505a200d906a53b5ccad9", "grade": false, "grade_id": "cell-fd97830ca86da056", "locked": true, "schema_version": 3, "solution": false}} Joli affichage : ```{code-cell} --- deletable: false editable: false nbgrader: cell_type: code checksum: 4bde63a50106c50ddb6edc17d70a5a34 grade: false grade_id: cell-93b82e487af3eb2b locked: true schema_version: 3 solution: false --- for ( int i = 0; i < L; i++ ) { for ( int j = 0; j < C; j++ ) { cout << setw(2) << tableMultiplication[i][j] << " "; } cout << endl; } ```