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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Паскалька
10 / 10 / 1
Регистрация: 10.09.2013
Сообщений: 136
Записей в блоге: 1
#1

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

29.12.2013, 14:41. Просмотров 876. Ответов 8
Метки нет (Все метки)

Напишите программу, которая считывает два целых числа a и b и выводит наибольшее значение из них. Числа — целые от 1 до 1000.

При решении задачи можно пользоваться только целочисленными арифметическими операциями +, -, *, //, %, =. Нельзя пользоваться нелинейными конструкциями: ветвлениями, циклами, функциями вычисления модуля, извлечения квадратного корня.

Использование функции max запрещено!

Надеюсь получить хоть какие-то объяснения)
Могу решить несколькими способами, но они все запрещены(((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2013, 14:41     Задача №2958. Максимум
Посмотрите здесь:

Задача на максимум и минимум - C++
Помогите найти ошибку пожалуйста//суть задачи:вводить с клавиатуры числа пока не введем 0,после вывести максимум и минимум из этих...

Задача на максимум.Вектора - C++
даны действительные числа А1,А2..An.Получить последовательность,удалив из исходной все максималымые элементы

Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум - C++
Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум. Вот заполнение и максимум, но не знаю, как строки...

Среди введенных четных чисел найдите максимум (М1), также найдите максимум (М2) среди нечетных чисел - C++
На вычислительной практие дали такое задание: С клавиатуры вводится произвольная последовательность целых положительных чисел. Числа...

максимум - C++
найти квадрат максимума из введенных чисел

Максимум последовательности - C++
Я не могу понять, почему переменная max = 0 сравнивается со всеми x. Объсните, пожалуйста. #include <iostream> using namespace std; ...

Максимум в массиве - C++
Найти максимум в массиве иего положение Добавлено через 1 минуту #include <iostream> using namespace std; int main() { int...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кирилл
1 / 1 / 0
Регистрация: 28.03.2012
Сообщений: 25
29.12.2013, 14:49     Задача №2958. Максимум #2
А использовать тренарный оператор ?: нельзя?
Паскалька
10 / 10 / 1
Регистрация: 10.09.2013
Сообщений: 136
Записей в блоге: 1
29.12.2013, 14:51  [ТС]     Задача №2958. Максимум #3
Цитата Сообщение от Кирилл Посмотреть сообщение
А использовать тренарный оператор ?: нельзя?
Все что нельзя написано. А это наверно можно.
Кирилл
1 / 1 / 0
Регистрация: 28.03.2012
Сообщений: 25
29.12.2013, 14:54     Задача №2958. Максимум #4
Ну тогда все просто
C++
1
c = a > b ? a : b;
Паскалька
10 / 10 / 1
Регистрация: 10.09.2013
Сообщений: 136
Записей в блоге: 1
29.12.2013, 14:55  [ТС]     Задача №2958. Максимум #5
Цитата Сообщение от Кирилл Посмотреть сообщение
Ну тогда все просто
C++
1
c = a > b ? a : b;
Прости, я скажем так "Дурачек", чуть-чуть объясни
Кирилл
1 / 1 / 0
Регистрация: 28.03.2012
Сообщений: 25
29.12.2013, 14:58     Задача №2958. Максимум #6
http://cppstudio.com/uchebniki/yazyk...ya-vybora-v-s/
Паскалька
10 / 10 / 1
Регистрация: 10.09.2013
Сообщений: 136
Записей в блоге: 1
29.12.2013, 14:58  [ТС]     Задача №2958. Максимум #7
Цитата Сообщение от Кирилл Посмотреть сообщение
Ну тогда все просто
C++
1
c = a > b ? a : b;
Вроде понял, да и пишется Тернарный оператор или не?
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
29.12.2013, 15:14     Задача №2958. Максимум #8
Есть числа 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 минуты
Кстати, тернарный оператор запрещён условиями задачи, ведь он является ветвлением.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2013, 17:06     Задача №2958. Максимум
Еще ссылки по теме:

Максимум в матрице - C++
помагите плиз ...ни как не могу разобрать...с задачей на Турбо Си. Дана квадpатная матpица действительных чисел pазмеpности n (n &lt;=20)....

максимум в массиве - C++
Народ, помогите! Как найти максимум в массиве с помощью циклов и условного оператора?

найти максимум из x[1]...x[n] - C++
нужно сделать ету програму на класах, помогите пожалуста!

Найти максимум - C++
здраствуйте,помогите написать программу на dev-c++,с объяснением пожалуста. условие: Ввести три числа и найти наибольшее из...

максимум и минимум - C++
Даны x, y, z. Вычислить a, b, используя приведенные ниже формулы. Получить max(a, b). a=\frac{1+{\sin...


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

Или воспользуйтесь поиском по форуму:
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
29.12.2013, 17:06     Задача №2958. Максимум #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdio>
using namespace std;
 
int main()
{
    int a, b;
 
    scanf( "%d%d", &a, &b );
    printf( "max: %d\n", ( a / b * a + b / a * b ) / ( a / b + b / a ) );
 
    return 0;
}
Yandex
Объявления
29.12.2013, 17:06     Задача №2958. Максимум
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru