Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Croessmah
++Ͻ
14543 / 8302 / 1560
Регистрация: 27.09.2012
Сообщений: 20,368
Записей в блоге: 3
Завершенные тесты: 1
18.09.2013, 15:40

Расскаэите о указателях на функции

18.09.2013, 15:40. Просмотров 752. Ответов 20
Метки (Все метки)

Ответ

Цитата Сообщение от h_wolf Посмотреть сообщение
я не знаю ни шаблонов, ни классов пока, так что Ваш пример мне не ясен...
Вот почти тоже самое без шаблонов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
//Функция вывода массива - можно даже не смотреть
void out_array ( const int * arr , int size ){
  for ( int i = 0 ; i < size ; ++i )
    std :: cout << arr [ i ] << " " ;
  std::cout << std::endl ;
}
 
 
 
void bubbleSort ( int * arr , int size , bool (*cmp_func) ( const int & , const int & ) ) //Третий параметр - указатель на функцию, с помощью которой будут сравниваться элементы
{
    int tmp;
 
    for(int i = 0; i < size - 1; ++i)
    {            
        for(int j = 0; j < size - 1; ++j)
        {     
            if ( cmp_func ( arr[j + 1] , arr[j] ) ) //Сравниваем элементы с помощью функции, указатель на которую передали
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}
 
 
 
bool cmp_less ( const int & first , const int & second ) {
  return first < second ;
}
 
bool cmp_great ( const int & first , const int & second ) {
  return first > second ;
}
 
 
 
int main( ) {
  const int size = 10 ;
  int arr [ size ] = {6,8,7,5,3,2,9,0,1,4} ;
  out_array ( arr , size ) ; //Вывод массива
  bubbleSort ( arr , size , cmp_less ) ; //Сортировка. Третий параметр - указатель на функцию, с помощью которой будут сравниваться элементы
  out_array ( arr , size ) ; //Смотрим результат
  bubbleSort ( arr , size , cmp_great ) ; //Опять сортируем, но теперь передаем указатель на другую функцию
  out_array ( arr , size ) ; //Смотрим теперь что получилось
  //Таким образом с помощью одной функции сортировки. мы смогли отсортировать массив и по возрастанию и по убыванию, передавая указатель на функцию сравнения элементов
}


Вернуться к обсуждению:
Расскаэите о указателях на функции
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2013, 15:40
Готовые ответы и решения:

Об указателях
В чем разница между этими двумя строчками? int* x; int *x;

Запутался в указателях
Поиск элемента, равного figure void remove_helper(std::shared_ptr&lt;BTreeItem&gt;...

немного об указателях
есть код: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; ...

Ошибка в указателях
Здравствуйте, не понимаю почему выводит мусор. Вроде бы все правильно сделал....

Реализация стека на указателях
Стек на указателях: #include &lt;iostream&gt; using std::cin; using std::cout;...

20
Другие темы раздела
C++ Сравнение строки http://www.cyberforum.ru/cpp-beginners/thread957055.html
Есть переменная char S; В нее что-то записали. Как проверить что S!="." и S!=".." bool result; в result записать true, если S!="." и S!=".." То есть если строка - символ точка . , или две...
C++ Неверное значение Имеется такой кусок кода: if (second_menu == 0) main_menu(); // главное меню else { weight_menu(); // меню ввода переменной weight switch (second_menu) { case... http://www.cyberforum.ru/cpp-beginners/thread957033.html
C++ Проверка принадлежности точки определенной плоскости
Никак не дойдет алгоритм решения задачи -.- Помогите.
Уравнение C++
Помогите пожалуйста, как можно вычислить такое выражение:
C++ 1. Написать программу, которая предлагает пользователя ввести дату рождения http://www.cyberforum.ru/cpp-beginners/thread957004.html
1. Написать программу, которая предлагает пользователя ввести дату рождения отца, в формате YYYY MM DD, затем дату рождения сына, в том же формате, после чего вычисляет, на сколько лет, месяцев и...
C++ Округление числа до двух знаков после запятой 8. Написать программу, которая предлагает пользователю ввести дробное число, округляет его до двух знаков после запятой и выводит результат в консоль. подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru