aboutsummaryrefslogtreecommitdiff
path: root/week02/exercise07.cpp
blob: 708ff20eb0af5fff99bff943872fe62f104b5d68 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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;
}