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

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

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

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

25.09.2015, 09:49. Просмотров 191. Ответов 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2015, 09:49     Typedef и массивы указателей на функции
Посмотрите здесь:

Массивы указателей на функции-члены не работают - C++
всем привет. по книге джеса либерти переписал код массива указателей на функции члены, но код выдает ошибку. Вызове функции отсутствует...

Указатели на функции + typedef - C++
Здравствуйте , я вот встретил такую конструкцию typedef int(*compare_func_t)(const void*val1, const void*val2); Не понял что она означает...

Массивы указателей - C++
Дан код: const int Width = 3; const int Height = 5; char arr2 = { &quot;1str&quot;, &quot;2str&quot;, &quot;3str&quot;}; char(*x) = arr2; ...

Массивы указателей - C++
#include &quot;stdafx.h&quot; #include &quot;stdlib.h&quot; #include &quot;locale.h&quot; #include &quot;stdio.h&quot; void p1(float &amp;); void p2(float &amp;); void...

Массивы указателей в классе. - C++
Приветствую. Подскажите пожалуйста, как объявить и инициализировать массив указателей в классе. Пишу например вот так bool (*arrHand)...

Иерархия классов: массивы указателей - C++
Добрый день или ночь. Создаю иерархию и возник вопрос: можно ли сделать так, как я сделал?) есть 6 классов один из них абстрактный...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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Эксперт С++
13050 / 7313 / 814
Регистрация: 27.09.2012
Сообщений: 18,049
Записей в блоге: 3
Завершенные тесты: 1
25.09.2015, 11:04     Typedef и массивы указателей на функции #8
Цитата Сообщение от anti-k Посмотреть сообщение
где скачать ровный и вообще четкий )) халявный Visual, это будет нарушение?
прям на сайте microsoft, представьте себе
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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++
Вообщем: мне надо так,чтобы объект имел связь с N-ым количеством каких-то объектов.про динамические массивы в курсе. такой вопрос,что...

Массивы указателей и ошибка Access violation reading location - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; class Number { public: int x; int calc(Number* start,...

Указатели на массивы: В чем принципиальное различие между объявлениями указателей? - C++
Вопрос по теории В чем принципиальное различие между данными обьявлениями? (+ правильно ли я понимаю, что 1и2, 3и4 это синонимы?) ...


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

Или воспользуйтесь поиском по форуму:
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