Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Задача №2958. Максимум - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выполнить перевод чисел из одной системы счисления в другую и обратно http://www.cyberforum.ru/cpp-beginners/thread1059990.html
Выполнить перевод чисел из одной системы счисления в другую и обратно. Убедиться в правильности результата. 101,101 (2 в 8) 1101110001 (2 в 10) В заданной системе счисления выполнить действия над...
C++ Тонкости типов данных Господа, подскажите, пожалуйста, в чем моя ошибка, не вижу, хоть убейся. Программа простейшая, но результат выдается в конце один и тот же, - число 2, - при любых начальных значениях параметров.... http://www.cyberforum.ru/cpp-beginners/thread1059942.html
C++ Создать класс прямоугольник, члены класса - координаты 4-х точек
Создать класс прямоугольник, члены класса - координаты 4-х точек. Предусмотреть в классе методы проверки существования четырехугольника вычисления и вывода сведений о фигуре – длины сторон,...
события от клавиатуры C++
Сводная таблица расширенных кодов Значение 2-го Соответствующие клавиши байта 15 Shift + Tab ("back-tab") 16-25 Alt-Q -...
C++ Вычисление значения рядных функций http://www.cyberforum.ru/cpp-beginners/thread1059893.html
Здравствуйте, коллеги. Уже третью неделю мучаю программу и не могу понять, в чем ошибка. Нужно посчитать функцию и вывести таблицу (подробнее в приложенном задании). Дело в том, что у меня считает...
C++ Дано натуральное число n и действительное число x. Вычислить : Дано натуральное число n и действительное число x. Вычислить : S=sinx+coscosx+sinsinsinx+coscoscoscosx+..... (n раз) подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1638 / 1010 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
29.12.2013, 15:14
Есть числа a > 0, b > 0.
Разность: d = a - b, знак неизвестен.
Операция остатка x%y работает математически неправильно, возвращает отрицательное число при отрицательных x и терпимо относится к отрицательным y.
(d+1)%d даст нам 1 при положительном d и (d+1) при отрицательном. Вычтем из результата 1, это будет 0 или d соответственно. Зафиксируем: f(x) = ((x+1) % x) -1
Если a < b, то d будет отрицательным, f(a - b) = a - b. Вычтем его из a, получим a - (a - b) = b, наибольшее из двух чисел. Если a > b, то f(a - b) = 0, вычтя 0 из a, получим a, опять же наибольшее из чисел.
В случае равенства a = b при вычислении f будет деление на 0, это недостаток, над искоренением которого можно поработать дальше. Если нужно.
C++
1
2
3
4
5
6
7
8
9
inline int f(int x)
{
    return ((x + 1) % x) - 1;
}
 
inline int myMax(int a, int b)
{
    return a - f(a - b);
}
Добавлено через 3 минуты
Кстати, тернарный оператор запрещён условиями задачи, ведь он является ветвлением.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru