Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Паскалька
10 / 10 / 2
Регистрация: 10.09.2013
Сообщений: 136
Записей в блоге: 1
1

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

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

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

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

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

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

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

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

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

Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали
Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум...

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

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

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

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

Максимум последовательности
Я не могу понять, почему переменная max = 0 сравнивается со всеми x. Объсните,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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