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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Прокомментировать код http://www.cyberforum.ru/cpp-beginners/thread795665.html
Добрый вечер! Есть вопросы по коду... не понимаю некоторые строки. Их выделю розовым цветом. Буду очень благодарна!!! #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <io.h> #include <fcntl.h> #include <sys\stat.h>
C++ Написать комментарии к коду Добрый вечер! Есть вопросы по коду... не понимаю некоторые строки. Их выделю красным цветом. Буду очень благодарна!!! #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <io.h> #include <fcntl.h> #include <sys\stat.h> http://www.cyberforum.ru/cpp-beginners/thread795650.html
TTimer время работы программы C++ Builder
Нужно сделать так, чтобы таймер показывал время работы программы(после нажатия BitBtn1) //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include <iostream.h> #include <math.h> //---------------------------------------------------------------------------
Конструкторы и деструкторы C++
Напишите простейшие примеры объявления и определения конструкторов и деструкторов. Желательно, чтобы были примеры с различными типами данных
C++ Угадать задуманное пользователем число http://www.cyberforum.ru/cpp-beginners/thread795627.html
Описание словами: (я загадала 3) Прога пишет "Введите число с которого начать отсчет" 2 "Введите число которым закончить отсчет" 5 "Это число 4. Количество шагов = 1 1 - больше 2 - меньше 3- угаданное" Пользователь нажимает 2
C++/CLI WinForms Плавающая точка в калькуляторе Привет, ребята. Я решил заняться самообразованием и вот, уже начал писать калькулятор с визуальным интерфейсом :) Вот только у меня возникла одна проблемка. У меня не получается установить точку-разделитель числа :( Существует две версии. Первая: private: System::Void point_Click(System::Object^ sender, System::EventArgs^ e) { txt->Text = (txt->Text) + System::Convert::ToString("."); ... подробнее

Показать сообщение отдельно
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
26.02.2013, 20:53     Указатель на функцию и параметры по умолчанию
Приветствую! Есть такая задача - мне нужно передавать в специальную функцию массив и указатель на функцию. Функции эти для сортировки, и имеют вид примерно такой:
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;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru