Comparison of two numbers without using if

Здравейте,

Който е успял да напише задачата за сравняване на две числа без да използва if и има желание може ли да сподели метода за изписване на по-голямото число? Имам идея как да определя кое е по-голямото без да използвам if, но след това изпитвам затруднение в изписването на по-голямото.
Предварително благодаря на всеки, който се включи :slight_smile:

Здравей!
Ето една подсказка от учебните материали:

Поздрави!

3 Likes

Здравей, много благодаря за помощта! Съвсем в друга посока бях тръгнала - исках да използвам резултата от разликата им → ако е отрицателен, то първото число е по-голямо.

1 Like

Втори подход с догонване на разликата:

Ако имаме две числа, може да вземем разликата им по модул (истински модул, а не модулно деление). Тази разлика, ако си го представим, ще ни даде с колко едното число е по-голямо от другото.
Нека числата са a и b и са цели, тогава int difference = Math.abs(a - b).
Имайки тази разлика, може да допълним с нея по-малкото. Но ние не знаем кое е по-малкото, за това ще добавим тази разлика към сумата на двете и ще разделим тази сума на 2. По този начин ще намерим числото само с аритметика.

int greater = (difference + a + b) / 2, където difference = Math.abs(a + b)

2 Likes

Това може да се постигне с т.н. ternary operator
int a = 5 ;
int b = 10 ;
System.out.println(a > b ? a : b) ; // 10
също така може да се присвои на променлива
int a = 5 ;
int b = 10;
int c = 15 ;
int result = a > b ? a : b ; // tova shte prisvoi na result 10
result = result > c ? result : c ; // tova shte prisvoi na result 15

От ляво на “?” имаме bool expression , отдясно се връща като резултат лявата част ако условието е true , дясната ако условието е false

1 Like

Аз също не реших две задачи от подобен характер, защото не знаех за възможностите на “Math”. Много допълнително четене и ровене в проблемите му е майката. Естествено, че помощ от приятел би помогнала. Аз лично не използвах такава, защото исках да се справя сам. Гледах и дадените примери, но явно точно това съм пропуснал …

Така пак се стига до if statement обаче…

Здравейте,

малко не съм по темата, но исках да попитам дали изтече deadline за допълнителните задачи за решаване, към тези за домашно. От тях беше Rectangle AreaPage. Не ги откривам :slight_smile: Бих искала отново да ги достъпя, за да продължа да се упражнявам с тях.

Здравейте!
Ако имате предвид това:


току-що събмитнах решение, т.е. е достъпно.
Успех!

https://learn.telerikacademy.com/mod/page/view.php?id=27885