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

Двоичный поиск - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс «Здание» с данными количество этажей, подъездов и квартир http://www.cyberforum.ru/cpp-beginners/thread271648.html
1. Объявить класс по приведенному ниже заданию в соответствии с номером варианта и определить для него конструктор по умолчанию, конструктор инициализации и конструктор преобразования. 2. Определить функции-члены класса для ввода и вывода членов-данных внутри объявления класса. 3. Составить программу, которая определяет четыре объекта класса и выводит их на экран. Первый объект должен...
C++ Триугольник Треугольник ABC заданы координатами своих вершин на плоскости. Найти внутренние углы треугольника (в радианах). http://www.cyberforum.ru/cpp-beginners/thread271646.html
Функции C++
Треугольник ABC заданы координатами своих вершин на плоскости. Найти внутренние углы треугольника (в радианах).
C++ Сформировать другой массив, в который поместить сначала числа меньшие среднего арифметического значения этого массива, затем – большие.
Дан целочисленный массив, состоящий из 15 элементов. Сформировать другой массив, в который поместить сначала числа меньшие среднего арифметического значения этого массива, затем – большие.
C++ ярлык http://www.cyberforum.ru/cpp-beginners/thread271636.html
Здравствуйте господа програмисты!Возникла проблема-как програмно создать ярлык на свою программу на рабочий стол? Заранее всем огромное спасибо!!! Добавлено через 5 минут на dev c++ консольное приложение.
C++ Как созадть такой экземпляр? Пусть есть класс: class A { protected: type field; .... }; а выше описан тип (возможно класс, или структура) type, или макрос type - синоним существующего (возможно стандартного) типа. В классе нет открытых членов, прямо, или косвенно пишуших член field. Как создать экземпляр класса A с определённым значением члена field? подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.04.2011, 21:43     Двоичный поиск
Цитата Сообщение от popov654 Посмотреть сообщение
Так если у Вас будет передаваться указатель на структуру, Вы приводите его к типу (int*), разыменовываете и делаете вычитание, то что получится в итоге? Вычитать можно вроде бы только целые, но что реально будет вычитаться в случае структуры в качестве аргумента?
Компаратор "подгоняется" под конкретный тип данных и конкретный случай вообще, тот что выше сделан для int и сортировки по убыванию. Если делать компаратор для структур, то и приводить тип, само собой, надо будет к типу этой структуры.
Цитата Сообщение от popov654 Посмотреть сообщение
Принцип возвращаемого значения вполне понятен (отрицательное, в случае если первый аргумент больше, ноль если равны, иначе положительное), но насчёт вычитания пока не понял...
Если принцип возвращаемого значения понятен, то тогда с вычитанием все совсем просто. Есть два числа x и y. Если x < y, то x - y < 0. Если x > y, то x - y > 0, если x == y, то x - y == 0. Унарный минус для всего выражения изменяют ситуацию на прямо противоположную. Если x < y, то -(x - y) > 0. Если x > y, то -(x - y) < 0, если x == y, то -(x - y) == 0. Что и делает компаратор пригодным для сортировки по убыванию, а не по возрастанию. Здесь применяется банальнейшая арифметика. Как я уже говорил компаратор подстраивается под конкретный случай, для целых чисел это (на мой взгляд) одна из наиболее коротких записей. В общем виде тело функции-компаратора выглядело бы так:
C
1
2
3
if (x < y) return -1;
else if (x > y) return 1;
else return 0;
И самое главное как всегда забыл сказать . Не обязательно возвращать -1 или 1, достаточно возвращать значение меньшее нуля или большее нуля. Это все объясняет
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru