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

Typedef и массивы указателей на функции - C++

Восстановить пароль Регистрация
 
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
25.09.2015, 09:49     Typedef и массивы указателей на функции #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
#include<windows.h>
#include<ctime>
#include<algorithm>
using namespace std;
void OutPut(int*arr,int size);
 
int* Sort_m(int* arr,int size);
int* Sort_l(int* arr,int size);
 
typedef int*(*ssort)(int*,int);
 
ssort edit[]={Sort_m,Sort_l};
int main(){
    int n=10;
    
    int* arr=new int [n];
    
    for(int i=0;i<n;i++){
       arr[i]=rand()%10;
    }
    OutPut(arr,n);  
    
    arr=edit[0](arr,n);
 
        OutPut(arr,n);
 
    
    arr=edit[1](arr,n);
 
        OutPut(arr,n);
    
    delete[]arr;
    
    return 0;
}
void OutPut(int*arr,int size){
    for(int i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<endl<<endl;
}
int* Sort_m(int* arr,int size){
    sort(arr,arr+size);
    return arr;
}
int* Sort_l(int* arr,int size){
    reverse(arr,arr+size);
    return arr;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2015, 09:49     Typedef и массивы указателей на функции
Посмотрите здесь:

C++ Массивы указателей в классе.
Массивы указателей C++
Иерархия классов: массивы указателей C++
Указатели на функции + typedef C++
Массивы указателей на объекты как данные класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6428 / 3802 / 882
Регистрация: 30.01.2014
Сообщений: 6,601
25.09.2015, 10:21     Typedef и массивы указателей на функции #2
Цитата Сообщение от anti-k Посмотреть сообщение
arr=edit[0](arr,n);
Цитата Сообщение от anti-k Посмотреть сообщение
arr=edit[1](arr,n);
Ну разве что перезаписывание arr выглядит несколько странно (но не влияет на корректность в данном случае), а в остальном все верно, по крайней мере с точки зрения кода.
Откуда сомнения?
И исходную задачу неплохо бы озвучить.
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
25.09.2015, 10:30  [ТС]     Typedef и массивы указателей на функции #3
DrOffset, Задача проста, сортировка массивов не используя условий и свичей, опираясь на указатели на функции и использовать typedef. А никак нельзя избежать
C++
1
2
int* Sort_m(int* arr,int size);
int* Sort_l(int* arr,int size);
этих строчек ???
DrOffset
6428 / 3802 / 882
Регистрация: 30.01.2014
Сообщений: 6,601
25.09.2015, 10:41     Typedef и массивы указателей на функции #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от anti-k Посмотреть сообщение
никак нельзя избежать
Можно
Кликните здесь для просмотра всего текста
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
#include<windows.h>
#include<ctime>
#include<algorithm>
using namespace std;
void OutPut(int*arr,int size);
 
int* Sort_m(int* arr,int size){
    sort(arr,arr+size);
    return arr;
}
int* Sort_l(int* arr,int size){
    reverse(arr,arr+size);
    return arr;
}
 
typedef int*(*ssort)(int*,int);
 
ssort edit[]={Sort_m,Sort_l};
int main(){
    int n=10;
    
    int* arr=new int [n];
    
    for(int i=0;i<n;i++){
       arr[i]=rand()%10;
    }
    OutPut(arr,n);  
    
    arr=edit[0](arr,n);
 
        OutPut(arr,n);
 
    
    arr=edit[1](arr,n);
 
        OutPut(arr,n);
    
    delete[]arr;
    
    return 0;
}
void OutPut(int*arr,int size){
    for(int i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<endl<<endl;
}

Или даже так (С++11):
Кликните здесь для просмотра всего текста
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
#include<ctime>
#include<algorithm>
#include<iostream>
using namespace std;
void OutPut(int*arr,int size);
 
typedef void (*ssort)(int*,int);
 
ssort edit[]= {
     [](int* arr, int size) { sort(arr,arr+size); }
   , [](int* arr, int size) { reverse(arr,arr+size); }
};
 
int main(){
    int n=10;
 
    int* arr=new int [n];
 
    for(int i=0;i<n;i++){
       arr[i]=rand()%10;
    }
    OutPut(arr,n);
 
    edit[0](arr,n);
 
        OutPut(arr,n);
 
 
    edit[1](arr,n);
 
        OutPut(arr,n);
 
    delete[]arr;
 
    return 0;
}
void OutPut(int*arr,int size){
    for(int i=0;i<size;i++)
    cout<<arr[i]<<" ";
    cout<<endl<<endl;
}
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
25.09.2015, 10:46  [ТС]     Typedef и массивы указателей на функции #5
Цитата Сообщение от DrOffset Посмотреть сообщение
ssort edit[]= {
* * *[](int* arr, int size) { sort(arr,arr+size); }
* *, [](int* arr, int size) { reverse(arr,arr+size); }
};
То что искал!!!! В точку!! Только в С++ 11?
DrOffset
6428 / 3802 / 882
Регистрация: 30.01.2014
Сообщений: 6,601
25.09.2015, 10:49     Typedef и массивы указателей на функции #6
Цитата Сообщение от anti-k Посмотреть сообщение
Только в С++ 11?
Да. Или выше.
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
25.09.2015, 11:03  [ТС]     Typedef и массивы указателей на функции #7
DrOffset, А если я спрошу на форуме, где скачать ровный и вообще четкий )) халявный Visual, это будет нарушение? Сам гуглил, качал, но не совсем то что искал, к примеру С++11 не поддерживает (((
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
25.09.2015, 11:04     Typedef и массивы указателей на функции #8
Цитата Сообщение от anti-k Посмотреть сообщение
где скачать ровный и вообще четкий )) халявный Visual, это будет нарушение?
прям на сайте microsoft, представьте себе
DrOffset
6428 / 3802 / 882
Регистрация: 30.01.2014
Сообщений: 6,601
25.09.2015, 11:07     Typedef и массивы указателей на функции #9
Цитата Сообщение от anti-k Посмотреть сообщение
А если я спрошу на форуме, где скачать ровный и вообще четкий )) халявный Visual, это будет нарушение?
Смотря как спрашивать. Если крякнутый нужен, то будет.
А вообще Visual Studio Express или Community 2013 или 2015 поддерживают многие возможности С++11. Скачать можно бесплатно с сайта Microsoft.
anti-k
 Аватар для anti-k
226 / 74 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
25.09.2015, 11:11  [ТС]     Typedef и массивы указателей на функции #10
Croessmah, Здравствуйте!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2015, 11:13     Typedef и массивы указателей на функции
Еще ссылки по теме:

C++ Указатели на массивы: В чем принципиальное различие между объявлениями указателей?
C++ Переделать программу через массивы указателей
C++ Массивы указателей и ошибка Access violation reading location

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

Или воспользуйтесь поиском по форуму:
Croessmah
25.09.2015, 11:13     Typedef и массивы указателей на функции
  #11

Не по теме:

Цитата Сообщение от anti-k Посмотреть сообщение
Здравствуйте
Приветствую

Yandex
Объявления
25.09.2015, 11:13     Typedef и массивы указателей на функции
Ответ Создать тему
Опции темы

Текущее время: 00:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru