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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Локальний максимум - C++
Дан массив размера N. Найти минимальный из его локальных максимумов (локальный максимум - это элемент, который больше любого из своих...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.12.2013, 17:06
Ответ Создать тему
Опции темы

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