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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
ol4ik
22 / 21 / 6
Регистрация: 08.04.2010
Сообщений: 90
#1

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

09.05.2011, 23:05. Просмотров 1060. Ответов 1
Метки нет (Все метки)

Функция должна сортировать и по возрастанию,и по убыванию с помощью бинарных предикатов.И ещё отсортировать элементы массива по возрастанию их синуса.
Программа работает только в одном случае,а для синусов вообще не работает. Объясните,в чём моя ошибка,а точнее,как сделать,чтобы функция сортировала правильно для всех трёх случаев.
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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
 
bool compare1(double a,double b)
{ return a<b;
}
 
bool compare2(double a,double b)
{ return a>b;
}
bool compareSin(double a,double b)
{return sin(a)<sin(b);}
 
double sort(double * inArr,int len,bool (*pfun)(double,double))
{ double swap;
   for (int i=0;i<len; i++)
    {for (int j=0; j<len-i; j++) 
        { if (pfun(inArr[j],inArr[j+1])==true) 
            {
               swap=inArr[j]; 
               inArr[j]=inArr[j+1];
               inArr[j+1]=swap;
            }
        }
}
   for(int i=0;i<len; i++)
   cout<<inArr[i];
   return 0;
}
 
 
int main()
{double *inArr=new double(10);
 int len;
 cout<<"enter LENGTH\n";
 cin>>len;
 cout<<"enter MASSIV\n";
 for(int i=0;i<len;i++)
 {  cout<<"inArr["<<i<<"]=";
    cin>>inArr[i];}
 sort(inArr,len,compare1);
 printf("\n");
 sort(inArr,len,compare2);
 printf("\n");
 sort(inArr,len,compareSin);
 getch();
 return 0;
}
Добавлено через 1 час 6 минут
оказалось,что swap-это стандартная функция
но всё равно ошибка не в этом
нужно уместить возможность сортировки по убыванию и возрастанию,и понять,что делать для сортировки по синусам

Добавлено через 39 минут
работает,если использовать сортировку
C++
1
2
3
4
5
6
7
while (len>0){
  len--;
int i=0;
while (i<len) {
  if ( pfun(inArr[i], inArr[i+1]) )
    swap (inArr[i],inArr[i+1]);
  i++; }  }
но желательнее,чтобы программа правильно работала с использованием метода пузырька(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2011, 23:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос указатель на функцию (C++):

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

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

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

Передача умного указателя в функцию принимающую указатель на указатель - C++
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Передать в неуправляемую функцию указатель на указатель - C++
Неуправляемая функция типа FUNC(int ** r); Делаю так fixed (int* ptr = arr) { FUNC((int **)ptr); ...

Указатель на функцию возвращающую указатель - C++
Всем привет. Подскажите, пожалуйста, пример не очень сложной программы, в которой встречается указатель на функцию, принимающую параметр...

1
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
09.05.2011, 23:40 #2
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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <cmath>
 
using namespace std;
 
bool compare1(double a, double b)
{
    return a < b;
}
 
bool compare2(double a, double b)
{
    return a > b;
}
 
bool compareSin(double a, double b)
{
    return sin(a) < sin(b);
}
 
void sort(double inArr[], int len, bool(*pfun)(double, double))
{
    double t;
    for(int i = 0; i < len; i++)
    {
        for(int j = 0; j < len-1; j++)
        {
            if(pfun(inArr[j + 1], inArr[j]) == true)
            {
                t = inArr[j];
                inArr[j] = inArr[j + 1];
                inArr[j + 1] = t;
            }
        }
    }
}
 
void writeLnArr(double a[], int len)
{
    for(int i = 0; i < len; i++)
        cout << a[i] << ' ';
    std::cout << '\n';
}
 
int main()
{
    int len;
    cout << "enter LENGTH\n";
    cin >> len;
    double *inArr = new double[len];
    cout << "enter MASSIV\n";
    for(int i = 0; i < len; i++)
    {
        cout << "inArr[" << i << "]=";
        cin >> inArr[i];
    }
    sort(inArr, len, compare1);
    writeLnArr(inArr, len);
 
    sort(inArr, len, compare2);
    writeLnArr(inArr, len);
 
    sort(inArr, len, compareSin);
    writeLnArr(inArr, len);
 
    getch();
 
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2011, 23:40
Привет! Вот еще темы с ответами:

Работа с файлом (передать указатель на файл в функцию, вернуть указатель на файл из функции) - C++
Подскажите как передать указатель на файл в функцию, как вернуть указатель на файл из функции. void Open() // из этой функции вернуть...

Как передать параметр типа "указатель на указатель" в функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; #include &lt;iomanip&gt; using std::setiosflags; ...

Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ? - C++
Собсно. То есть ребята, вот пример отсюда: http://www.cplusplus.com/reference/algorithm/count_if/ // count_if example #include...

Шаблоны функции и указатель на функцию передаваемый в функцию - C++
Привет! Вопрос такой: Если я пишу сортировку, например, bubbleSort и хочу помимо массива и его размера передать ещё и указатель на функцию,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru