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

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

Войти
Регистрация
Восстановить пароль
 
anti-k
227 / 75 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
#1

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

25.09.2015, 09:49. Просмотров 180. Ответов 10
Метки нет (Все метки)

Вроде работает, но уверен что что то делаю не так, подскажите как лучше.
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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6864 / 4075 / 928
Регистрация: 30.01.2014
Сообщений: 6,870
25.09.2015, 10:21     Typedef и массивы указателей на функции #2
Цитата Сообщение от anti-k Посмотреть сообщение
arr=edit[0](arr,n);
Цитата Сообщение от anti-k Посмотреть сообщение
arr=edit[1](arr,n);
Ну разве что перезаписывание arr выглядит несколько странно (но не влияет на корректность в данном случае), а в остальном все верно, по крайней мере с точки зрения кода.
Откуда сомнения?
И исходную задачу неплохо бы озвучить.
anti-k
227 / 75 / 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
6864 / 4075 / 928
Регистрация: 30.01.2014
Сообщений: 6,870
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
227 / 75 / 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
6864 / 4075 / 928
Регистрация: 30.01.2014
Сообщений: 6,870
25.09.2015, 10:49     Typedef и массивы указателей на функции #6
Цитата Сообщение от anti-k Посмотреть сообщение
Только в С++ 11?
Да. Или выше.
anti-k
227 / 75 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
25.09.2015, 11:03  [ТС]     Typedef и массивы указателей на функции #7
DrOffset, А если я спрошу на форуме, где скачать ровный и вообще четкий )) халявный Visual, это будет нарушение? Сам гуглил, качал, но не совсем то что искал, к примеру С++11 не поддерживает (((
Croessmah
Модератор
Эксперт CЭксперт С++
12892 / 7278 / 811
Регистрация: 27.09.2012
Сообщений: 17,977
Записей в блоге: 2
Завершенные тесты: 1
25.09.2015, 11:04     Typedef и массивы указателей на функции #8
Цитата Сообщение от anti-k Посмотреть сообщение
где скачать ровный и вообще четкий )) халявный Visual, это будет нарушение?
прям на сайте microsoft, представьте себе
DrOffset
6864 / 4075 / 928
Регистрация: 30.01.2014
Сообщений: 6,870
25.09.2015, 11:07     Typedef и массивы указателей на функции #9
Цитата Сообщение от anti-k Посмотреть сообщение
А если я спрошу на форуме, где скачать ровный и вообще четкий )) халявный Visual, это будет нарушение?
Смотря как спрашивать. Если крякнутый нужен, то будет.
А вообще Visual Studio Express или Community 2013 или 2015 поддерживают многие возможности С++11. Скачать можно бесплатно с сайта Microsoft.
anti-k
227 / 75 / 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++ Массивы указателей и ошибка Access violation reading location
C++ Массивы указателей
C++ Массивы указателей на функции-члены не работают
C++ С++ Тема «Указатели и динамические массивы. Использование указателей в качестве аргументов функций»

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

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

Не по теме:

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

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

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