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

Указатели на функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить арксинус угла в градусах http://www.cyberforum.ru/cpp-beginners/thread995865.html
x = asin(sin(y * (pi / 180))) * (180 / pi); Краткое описание: х - искомый результат (арксинус в градусах), у - угол в градусах. В качестве параметра функции asin нужно передать синус угла в радианах, который вычисляется функцией sin, параметром которой является угол в радианах (поэтому мы переводим градусы в радианы). Т.к. asin возвращает значение в радианах, то переводим в градусы. ...
C++ GCC returning reference to temporary Например вот так: int func2() { int input; cin >> input; return input; } int&& func1() { http://www.cyberforum.ru/cpp-beginners/thread995859.html
Не компилируется. Объясните смысл ошибки // opencv C++
Поставил opencv на mac. Компилю простую вещь и мне выдает такое: Undefinded symbols for architecture x86_64: "cv::imread( .... )" Насколько я понимаю, он не знает эту функцию imread(..) Тобиш, я неправильно поставил opencv? Или дело вообще в другом?
C++ Очередь с приоритетом
Помогите, пожалуйста, создать из моего класса очередь с приоритетом(приоритетом является money). #include <iostream> #include <string.h> #include <queue> // class Client{ char* name; int money; //
C++ цифры после запятой http://www.cyberforum.ru/cpp-beginners/thread995847.html
Нужно из float'ского типа достать значения после запятой. к примеру имеем число 3.13 нужно получить в итоге int'овское 13. учитывая: целая часть всегда равна 3. гарантировано то, что всегда есть дробная часть(или десятые или сотые).
C++ copy_if Пусть у меня есть двумерный массив векторов, а также вектор, содержащий индексы тех строк массива, которые надо скопировать. Можно ли это оформить через copy_if? как правильно составить условие копирования? подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,733
Записей в блоге: 3
03.11.2013, 02:40     Указатели на функции
Цитата Сообщение от Genn55 Посмотреть сообщение
IGPIGP я же только начинающий!С 3 или 5 я уже писал -получается,а вот с указателями буксую.
Начните с указателей на int. Указатели на функции это ещё рановато, с параметрами по умолчанию. Новичок такое придумать может, конечно, но.. Поступайте как знаете.
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
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
 
using namespace std;
//Прототипы функций
const int min_val = 0;
const int max_val = 6;
typedef bool (*Overfl)(int);
typedef void(*Overfl_mess)();
 
bool negativ_err (int);//Функции сравнения
bool maх_overfl(int);//Функции сравнения
void negativ_mess ();//Подсказки
void maх_overfl_mess ();//Подсказки
//Функция принимает указатели на функции
//значения указателя не стоит указывать как false, лучше 0 или nullptr (если поддерживается))
//но в коде нужно организовать проверки, я наскоро кривовато сделал и не вглядывался 
 
void oshibka (int& a, bool (*negativ_err)(int),void(*negativ_mess)(),Overfl maх_overfl= 0, Overfl_mess maх_overfl_mess =0);
//вообще лучше две перегруженные версии написать - ровнее будет выглядеть (имхо)
int main()
{
    system("chcp 1251 > nul");
int n,m;
    cout << "Введите число "<< "\n";
    cin >> n;
     oshibka (n,negativ_err,negativ_mess,maх_overfl,maх_overfl_mess);
    cout << "Введите число "<< "\n";
    cin >> m;
    oshibka (m,negativ_err,negativ_mess);//Повторный вызов выдает ошибку
    cout << "     "<<n<<"   "<<m<<"\n";
system("pause");
return 0;
}
//Описания функций
void oshibka(int& a, bool (*negativ_err)(int),void(*negativ_mess)(),Overfl maх_overfl, Overfl_mess maх_overfl_mess)
{
bool bad_input=false;
if(negativ_err(a)){
    negativ_mess ();
    bad_input=true;
}
if(maх_overfl && maх_overfl(a)){
maх_overfl_mess ();
bad_input=true;
}
if(bad_input ){
    if(maх_overfl){
cin>>a; 
oshibka(a, negativ_err, negativ_mess, maх_overfl, maх_overfl_mess);
    }else{
cin>>a; 
oshibka(a, negativ_err, negativ_mess);
    }
 
}
}
 
void negativ_mess ()
{
    cout <<  "Число не может быть меньше " << min_val << endl;
}
void maх_overfl_mess ()
{
    cout << "Число  не может быть больше " << max_val <<endl;
}
bool negativ_err (int a)
{
    return a <= 0 ;
}
bool maх_overfl (int a)
{
    return a > 6 ;
}
 
Текущее время: 11:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru