aboutsummaryrefslogtreecommitdiff
path: root/week02/exercise07.cpp
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2023-10-19 19:40:08 +0300
committerSyndamia <kamen@syndamia.com>2023-10-19 19:40:08 +0300
commitfbbe586d25b1ebaf66fe2e92e1986bb5debf961d (patch)
tree58f288b71fd5d1e046158b442438ea282285a619 /week02/exercise07.cpp
parenta597f37a109398549d8ab098a2d6de19a4a1b4b8 (diff)
downloadupp-2023-solutions-fbbe586d25b1ebaf66fe2e92e1986bb5debf961d.tar
upp-2023-solutions-fbbe586d25b1ebaf66fe2e92e1986bb5debf961d.tar.gz
upp-2023-solutions-fbbe586d25b1ebaf66fe2e92e1986bb5debf961d.zip
[w2] Added solutions
Diffstat (limited to 'week02/exercise07.cpp')
-rw-r--r--week02/exercise07.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/week02/exercise07.cpp b/week02/exercise07.cpp
new file mode 100644
index 0000000..708ff20
--- /dev/null
+++ b/week02/exercise07.cpp
@@ -0,0 +1,29 @@
+#include <iostream>
+
+int main() {
+ int a, b, c;
+ std::cin >> a >> b >> c;
+ // Най-ефикасния начин да направим това, е да използваме 3 if-a и в тях да разменяме стойностите,
+ // така че накрая винаги a, b и c са в нарастващ ред
+ // Най лесния начин да обясня логиката е следния:
+ // Искаме a < b < c, това може да го сведем до точно 3 сравнение между две стойности,
+ // a < b, b < c и това което е изпълнено поради дефиницията на <, a < c
+ // a < b < c може да не е изпълнено, когато a < b, b < c и/или a < c не е изпълнено
+ // Затова разглеждаме точно тези случаи, които не биха били изпълнени, и с размяна ги правим изпълнени
+ if (a > b) {
+ int temp = a;
+ a = b;
+ b = temp;
+ }
+ if (b > c) {
+ int temp = b;
+ b = c;
+ c = temp;
+ }
+ if (a > c) {
+ int temp = a;
+ a = c;
+ c = temp;
+ }
+ std::cout << a << ' ' << b << ' ' << c << std::endl;
+}