From 3421c6f3464f52204abe9bb48a3c3d5e63913870 Mon Sep 17 00:00:00 2001 From: Maulaz Tony Date: Thu, 16 Dec 2021 23:35:55 +0100 Subject: [PATCH] Add exercice namespace --- README.md | 12 ++--- ex1-namespace.md | 127 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 9 deletions(-) create mode 100644 ex1-namespace.md diff --git a/README.md b/README.md index 592a4df..2cded5b 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,5 @@ -# poo-exercices -## Reference -Exercice sur les références -## Object - -## Héritage - -## Exception -Exercices sur les exceptions et le danger de l'allocation. \ No newline at end of file +# Exercices POO +## Ex 1 - Namespace +- [namespace.md](https://github.com/tony-maulaz/poo-exercices/blob/main/ex1-namespace.md) diff --git a/ex1-namespace.md b/ex1-namespace.md new file mode 100644 index 0000000..963c8a6 --- /dev/null +++ b/ex1-namespace.md @@ -0,0 +1,127 @@ +# Ex 1 +Modifier le code suivant sans utiliser de `using` pour le rendre exécutable. + +```cpp +#include + +namespace lib1 { + int calc(int val){ + return val * 2; + } +} + +namespace lib2 { + int var = 2; +} + +int main() +{ + + cout << "Ex namespace" << endl; + + cout << calc( var ) << endl; + + return 0; +} +``` + +# Ex 2 +Reprenez le code de l'exercice 1 et rendez le exécutable en utilisant des `using` + +# Ex 3 +Lors de l'exécution du code ci-dessous, quel est l'affichage. + +```C +#include + +namespace lib1 { + void afficher(int val){ + std::cout << "Afficher lib1" << std::endl; + } +} + +namespace lib2 { + void afficher(int val){ + std::cout << "Afficher lib2" << std::endl; + } +} + +using namespace lib1; + +int main() +{ + afficher(12); + afficher(24); + return 0; +} +``` + +# Ex 4 +Dans l'exercice 3, modifier l'appel de la deuxième fonction `afficher` afin d'utiliser celle de la `lib2`. + + +# solutions +## Ex 1 +```cpp +#include + +namespace lib1 { + int calc(int val){ + return val * 2; + } +} + +namespace lib2 { + int var = 2; +} + +int main() +{ + + std::cout << "Ex namespace" << std::endl; + + std::cout << lib1::calc( lib2::var ) << std::endl; + + return 0; +} +``` + +## Ex 2 +```cpp +#include + +namespace lib1 { + int calc(int val){ + return val * 2; + } +} + +namespace lib2 { + int var = 2; +} + +using namespace std; +using namespace lib1; +using namespace lib2; + +int main() +{ + + cout << "Ex namespace" << endl; + + cout << calc( var ) << endl; + + return 0; +} +``` + +## Ex 3 +```console +Afficher lib1 +Afficher lib1 +``` + +## Ex 4 +```cpp +lib2::afficher(24); // appel lib2 +``` \ No newline at end of file