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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выполнить перевод чисел из одной системы счисления в другую и обратно http://www.cyberforum.ru/cpp-beginners/thread1059990.html
Выполнить перевод чисел из одной системы счисления в другую и обратно. Убедиться в правильности результата. 101,101 (2 в 8) 1101110001 (2 в 10) В заданной системе счисления выполнить действия над числами: сложение, вычитание, умножение, деление.
C++ Тонкости типов данных Господа, подскажите, пожалуйста, в чем моя ошибка, не вижу, хоть убейся. Программа простейшая, но результат выдается в конце один и тот же, - число 2, - при любых начальных значениях параметров. #include <iostream> #include <math.h> using namespace std; double func(double u, double y) { double r; http://www.cyberforum.ru/cpp-beginners/thread1059942.html
C++ Создать класс прямоугольник, члены класса - координаты 4-х точек
Создать класс прямоугольник, члены класса - координаты 4-х точек. Предусмотреть в классе методы проверки существования четырехугольника вычисления и вывода сведений о фигуре – длины сторон, диагоналей, периметр, площадь. Создать производный класс – параллелограмм, предусмотреть в классе проверку, является ли фигура параллелограммом. Написать программу, демонстрирующую работу с классом: дано...
события от клавиатуры C++
Сводная таблица расширенных кодов Значение 2-го Соответствующие клавиши байта 15 Shift + Tab ("back-tab") 16-25 Alt-Q - Alt-P (верхний ряд букв) 30-38 Alt-A - Alt-L (средний ряд букв) 44-50 Alt-Z - Alt-M (нижний ряд букв)
C++ Вычисление значения рядных функций http://www.cyberforum.ru/cpp-beginners/thread1059893.html
Здравствуйте, коллеги. Уже третью неделю мучаю программу и не могу понять, в чем ошибка. Нужно посчитать функцию и вывести таблицу (подробнее в приложенном задании). Дело в том, что у меня считает неправильно и во второй таблице не считает дальше двух первых значений. Без этого зачета мне не видать:( #include "stdafx.h" #include <cstdlib> #include <cmath> #include <cstdio> #include...
C++ Дано натуральное число n и действительное число x. Вычислить : Дано натуральное число n и действительное число x. Вычислить : S=sinx+coscosx+sinsinsinx+coscoscoscosx+..... (n раз) подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1605 / 997 / 118
Регистрация: 27.09.2009
Сообщений: 1,923
Завершенные тесты: 1
29.12.2013, 15:14     Задача №2958. Максимум
Есть числа 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 минуты
Кстати, тернарный оператор запрещён условиями задачи, ведь он является ветвлением.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru