Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для iRomul
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488

Указатель на функцию и параметры по умолчанию

26.02.2013, 20:53. Показов 2518. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Есть такая задача - мне нужно передавать в специальную функцию массив и указатель на функцию. Функции эти для сортировки, и имеют вид примерно такой:
C++
1
void s_sortname(char*, uint)
char* - массив
uint - число элементов массива.

В нужной функции я объявил такой указатель в качестве параметра

C++
1
void (*sort_fx)(char*, uint)
И вроде как всё работает, но есть проблема - у алгоритма quicksort функция имеет вид:

C++
1
void s_quicksort(char* str, uint high, uint low = 0)
Вот и возникла проблема, как передать эту функцию. Я надеялся, что компилятор учтёт параметр по умолчанию, но не вышло (ошибка типов).

Как решить проблему?

Код прилагается:

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//Bubble, Selection, Insertion, QS, Shell
 
#include <iostream>
#include <time.h>
#include <string.h>
 
#define SP " "
 
using namespace std;
 
typedef unsigned int uint;
 
void odd_sort(char* str, uint num, void (*sort_fx)(char*, uint)) {
 
    (*sort_fx)(str, num);
 
}
 
void s_qsort(char * array, uint high, uint low = 0) {
 
    int i = low;                
    int j = high;
 
    int x = array[(low+high)/2];
 
    do {
 
        while(array[i] < x) ++i;
        while(array[j] > x) --j;
 
        if(i <= j) {           
            
            swap(array[i], array[j]);
            
            i++; j--;
 
        }
 
    } while(i < j);
 
    if(low < j)  s_qsort(array, low, j);
    if(i < high) s_qsort(array, i, high);
 
}
 
int main() {
 
    //===BASE_INITIALISATION===
 
    cout << "Hello! This program will sort all odd element in array\n";
 
    char   some_text[] = "aSbCfDg"; //Source text
    char * sort_text;       //Second d-string for sort tests
 
    int i = strlen(some_text);
 
    sort_text = new char[i];
    
    cout << "Original text (len: " << i << "):\n";
 
    cout << some_text << endl;
 
    //===SORT_TABLE===
 
    strcpy(sort_text, some_text);
 
 
 
    odd_sort(some_text, i, s_qsort);
 
    cout << sort_text;
 
    //===END===
 
    delete [] sort_text;
 
    system("pause");
 
    return 0;
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2013, 20:53
Ответы с готовыми решениями:

Как создать функцию, принимающую в качестве аргумента иную функцию, в которой есть параметры по умолчанию?
У меня имеется функция msk с параметрами по умолчанию double msk(double a = 0.0, double b = 1.0) И имеется функция test, в которую мне...

Указатель на функцию с аргументами по умолчанию
Можно ли вообще определить и записать подобное чудо?

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

1
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
26.02.2013, 23:59
C++
1
2
3
4
void ss_qsort(char * array, uint high)
{
    s_qsort(array, high, 0);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2013, 23:59
Помогаю со студенческими работами здесь

Параметры функции: параметры по умолчанию
помогите пожалуйста понять. void foo(int a, int b, int c=1){std::cout &lt;&lt; a &lt;&lt; &quot;\t&quot; &lt;&lt; b &lt;&lt; &quot;\t&quot; &lt;&lt; c &lt;&lt; '\t';} int main(){ ...

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель
Друзья! Всем привет. Вот код: class otets { public: void f (void (otets::*p)()); private: void echo_f (){}; ...

Создать функцию с двумя аргументами, имеющими значение по умолчанию; вывести на экран значения по умолчанию
Доброго времени суток, помогите пожалуйста с задачей. -Создайте функцию с двумя аргументами, имеющими значение по умолчанию. Выведите...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Указатель на функцию, которая принимает в качестве параметра указатель на массив
я не понимаю. вроде делаю правильно, но выходит ошибка. есть функция. int foo(int *mas){}; cоздаю на нее указатель. int...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru