Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для PeterVl
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113

Разница между параметрами

29.06.2019, 18:42. Показов 2236. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите пожалуйста, как можно оценить расхождение между тремя числами. Допустим имеется три числа A, B и С, как самым коротким способом оценить разницу между самым малым и самым большим значением, среди этих трёх чисел или получить конкретное значение разницы?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2019, 18:42
Ответы с готовыми решениями:

Разница между параметрами QString и int
Хотел сделать так, чтобы во время изменения значения в SpinBox_1, пересчитанное значение оттуда сразу попадало в SpinBox_2 без нажатий...

Какая разница между аргументами и параметрами?
#include <iostream> using namespace std; //объявление функции int mystrlen(char *str); //В скобочках это параметр функции ? ...

Разница между рабочими и характеристическими параметрами четырехполюсника
Здравствуйте,подскажите,пожалуйста,в чем заключается разница между рабочими и характеристическими параметрами четырехполюсника?

6
40 / 29 / 15
Регистрация: 07.02.2019
Сообщений: 126
05.07.2019, 08:18
max = (((((A+B)/2)+(|A-B|/2))+C)/2)+(|(((A+B)/2)+(|A-B|/2))-C|/2) // Максимальное значение из "A, B, C"
min = (((((A+B)/2)-(|A-B|/2))+C)/2)-(|(((A+B)/2)-(|A-B|/2))-C|/2) // Минимальное значение из "A, B, C"
diff = max-min // Разница

Можно объединить в одну формулу:
diff = ((((((A+B)/2)+(|A-B|/2))+C)/2)+(|(((A+B)/2)+(|A-B|/2))-C|/2))-((((((A+B)/2)-(|A-B|/2))+C)/2)-(|(((A+B)/2)-(|A-B|/2))-C|/2))
1
 Аватар для PeterVl
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113
05.07.2019, 08:28  [ТС]
Крупновато вышло, но я думал, что существует более быстрый способ по сравнению с традиционным, без такого большого количества скобок и модулей
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,885
05.07.2019, 11:57
Лучший ответ Сообщение было отмечено PeterVl как решение

Решение

Формулу выше можно упростить.

Максимум и минимум двух чисел (2х):
a + b - |a - b|
a + b + |a - b|

Максимум и минимум трёх чисел (4х):
a + b - |a - b| + 2c - |a + b - |a - b| - 2c|
a + b + |a - b| + 2c + |a + b + |a - b| - 2c|

Вычитаем минимум из максимума (4х):
2|a - b| + |a + b + |a - b| - 2c| + |a + b - |a - b| - 2c|

Учитывая, что два последних слагаемых отличаются только знаком перед модулем |a - b|, модуль можно убрать:
2|a - b| + |a + b + a - b - 2c| + |a + b - a + b - 2c|

Делим результат на 4 (чтобы избавиться от 4х):
(|a - b| + |a - c| + |b - c|)/2


Тот же самый результат можно получить простым рассуждением.

Пусть a >= b >= c. Тогда
(a - c) = (a - b) + (b - c)
2(a - c) = (a - b) + (b - c) + (a - c)

Для произвольных a, b, c:
(|a - b| + |a - c| + |b - c|)/2
1
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
09.07.2019, 19:18
Цитата Сообщение от Ученик_333 Посмотреть сообщение
max = (((((A+B)/2)+(|A-B|/2))+C)/2)+(|(((A+B)/2)+(|A-B|/2))-C|/2)
Выглядит как глитч.
Разве давно нет Min(a,b) Max(a,b) в норм языках?
А разве не очевидно сделать через человеческие If then..
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,885
10.07.2019, 14:24
Цитата Сообщение от Excalibur921 Посмотреть сообщение
А разве не очевидно сделать через человеческие If then..
Возможно, хочется обойтись без ветвления. Например, так:
C#
1
2
3
4
5
public static int MaxDif(int a, int b, int c)
{
    int abs(int x) => (x + (x >> 31)) ^ (x >> 31);
    return (abs(a - b) + abs(b - c) + abs(c - a))/2;
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.07.2019, 21:15
Цитата Сообщение от Excalibur921 Посмотреть сообщение
А разве не очевидно сделать через человеческие If then..
В условии было описан критерий "самым коротким способом". Хз, что имел в виду ТС, но я бы расценивал это как "максимально быстрый код". В математических библиотеках зачастую можно увидеть подобный код, который на первый взгляд может показаться г-кодом, потому что проще и понятнее написать через if'ы. Но вот беда в том, что современные процессоры скорее всего быстрее отработают длинную кишку из арифметики, чем короткий код, содержащий условные переходы. Такое вот свойство у процессоров, имеющих конвейерное исполнение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.07.2019, 21:15
Помогаю со студенческими работами здесь

В чем разница между конструктором по умолчанию и конструктором с параметрами?
Объясните пожалуйста в чем разница между конструктором по умолчанию и конструктором с параметрами, константа внутри класса объявляется...

Какая разница между различными сокетами (например, между 775 и 1155)?
Обясните пожалуйста какая разница между сокетами, пример есть сокет 775 и 1155 я понимаю что разем не тот процессора другие но! как насчет...

Разница между if else и else if
Привет, у меня возник "нубский" вопрос. Этот код, это же соркащенная версия нижнего? int i = 3; if (i == 1) ...

Разница между != и <>?
есть ли разница между операторами != и &lt;&gt;, или они полностью эквивалентны? или &lt;&gt; это эквивалент !== в javascript?

Разница между <T> и <?>
Всем привет! Объясните, пожалуйста, на примере ниже отличия при использовании &lt;T&gt; и &lt;?&gt;. static void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru