Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
1

Массив ссылок на функции

06.08.2013, 12:58. Показов 4109. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните где ошибка:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
void minimum (int*,int);
void maximum (int*,int);
void average (int*,int);
 
int main()
{      
 setlocale(LC_CTYPE, "rus"); // русский язык в консоли
 const int a =10;
 int count=0;
 int aray[a]={0};
 void(*f[3])(int*,int)={minimum,maximum,average};
 std::cout<<"Выберите : \n ";
 
 system ("pause");
 
 
 
 return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2013, 12:58
Ответы с готовыми решениями:

Массив ссылок
Для проверки определить массив ссылок на абстрактный класс, которым присваиваются адреса различных...

Массив ссылок и for auto
Создаю массив std::array ссылок, для ссылок создаю объекты через new, а потом удаляю, можно ли в...

Как инициализировать массив ссылок?
//--------------------------------------------------------------------------- #include &lt;stdio.h&gt;...

Массив из ссылок
есть меню состоящее из ссылок как мне создать массив из этих ссылок используя...

12
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
06.08.2013, 12:59 2
Определения функций где?
0
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
06.08.2013, 13:03  [ТС] 3
Цитата Сообщение от Schizorb Посмотреть сообщение
Определения функций где?
Я их еще не писал, у меня не компилится мой массив с сылками

ошибка
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl average(int *,int)" (?average@@YAXPAHH@Z) в функции _main
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl maximum(int *,int)" (?maximum@@YAXPAHH@Z) в функции _main
1>1.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl minimum(int *,int)" (?minimum@@YAXPAHH@Z) в функции _main
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
06.08.2013, 13:06 4
Цитата Сообщение от MousePro Посмотреть сообщение
Я их еще не писал
Так напиши и вопросы отпадут.
0
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
06.08.2013, 13:21  [ТС] 5
Цитата Сообщение от Schizorb Посмотреть сообщение
Так напиши и вопросы отпадут.
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
#include <iostream>
#include <time.h>
void minimum (int*,int);
/*
void maximum (int*,int);
void average (int*,int);
*/
int main()
{      
    srand(time(NULL));
 setlocale(LC_CTYPE, "rus"); // русский язык в консоли
 const int a =10;
 int count=0;
 int aray[a]={0};
 for(int x=0;x<a;x++)
 {
     aray[x]=1+rand()%100;
 }
 
 std::cout<<"Выберите : \n ";
 std::cin>>count;
 /*
 void(*f[1])(int*,int)={minimum};
 (*f[count])(aray,a);
 */
 minimum(aray,a);
 system ("pause");
 
 
 
 return 0;
}
 
void minimum( int * aray,int a)
{
    for(int x=0;x<a;x++)
        std::cout<<aray[x]<<"\n";
}
Блин ппц, не могу никак привыкнуть к указателям... Где теперь тут ошибка )))
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
06.08.2013, 13:25 6
Кроме неподключенного #include <cstdlib> не вижу ошибки.
1
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
06.08.2013, 13:28  [ТС] 7
все равно не хочет
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
06.08.2013, 13:30 8
Кто не хочет и что не хочет? Конкретно, какая ошибка. Во время компиляции или исполнения?

Вот первый код:

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
#include <iostream>
#include <cstdlib>
 
void minimum (int*,int);
void maximum (int*,int);
void average (int*,int);
 
int main()
{      
    setlocale(LC_CTYPE, "rus"); // русский язык в консоли
    
    const int a =10;
    int count=0;
    int aray[a]={0};
    void(*f[3])(int*,int)={minimum,maximum,average};
    
    std::cout<<"Выберите : \n ";
 
    // тут какой-то код
    
    system ("pause");
    return 0;
}
 
void minimum (int*,int)
{
    // тут какое-то тело
}
void maximum (int*,int)
{
    // тут тоже какое-то тело
}
void average (int*,int)
{
    // тут еще какое-то тело
}
1
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
06.08.2013, 13:32  [ТС] 9
Цитата Сообщение от Schizorb Посмотреть сообщение
Кто не хочет и что не хочет? Конкретно, какая ошибка. Во время компиляции или исполнения?
да это у меня что то с студией, она даже "привет мир" не захотела компилить)
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
06.08.2013, 13:38 10
Блин ппц, не могу никак привыкнуть к указателям... Где теперь тут ошибка )))
Наверное проблема в этом
C++
1
2
 void(*f[1])(int*,int)={minimum};
 (*f[count])(aray,a);
замениете на

C++
1
2
 void(*f[1])(int*,int)={minimum};
 (*f)(aray,a);
1
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
06.08.2013, 13:46 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
void max(int, int*) {}
void min(int, int*) {}
void avg(int, int*) {}
 
int main()
{
    using func_t = void (*)(int, int*);
    func_t functions[3] = { max, min, avg };
    int x = 0;
    functions[0](x, &x);
    return 0 ;
}
Добавлено через 53 секунды
Цитата Сообщение от MousePro Посмотреть сообщение
void(*f[3])(int*,int)=
зверски удобная запись
2
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
06.08.2013, 14:05  [ТС] 12
Цитата Сообщение от Olivеr Посмотреть сообщение
зверски удобная запись
Да вроде бы норм )))

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <time.h>
#include <cstdlib>
void qSort(int[], int, int);
void all(int *,int);
void minimum (int *,int);
void maximum (int*,int);
void average (int*,int);
int main()
{      
    srand(time(NULL));
 setlocale(LC_CTYPE, "rus"); // русский язык в консоли
 const int a =10;
 int count=0;
 int aray[a]={0};
 for(int x=0;x<a;++x)
 {
     aray[x]=1+rand()%100;
 }
qSort(aray, 0, a-1);
 
 while(count !=4)
 {
 std::cout<<"Выберите : \n ";
 std::cout<<"0      Напечатать массив оценок \n ";
 std::cout<<"1  Найти низшую оценку \n ";
 std::cout<<"2  Найти высшую оценку \n ";
 std::cout<<"3  Найти среднее значение \n ";
 std::cout<<"4  Выход \n ";
 std::cin>>count;
 
if(count!=4)
{
 void(*f[4])(int*,int)={all,minimum,maximum,average};
 (*f[count])(aray,a);
}
 }
 system ("pause");
 
 
 
 return 0;
}
 
void all(int *aray,int a)
{
    std::cout<<"\n";
    for(int x=0;x<a;++x)
    {
        std::cout<<aray[x]<<"\n";
    }
}
void minimum( int * aray,int a)
{
    std::cout<<"\n";
std::cout<<aray[0]<<"\n";
}
void maximum( int * aray,int a)
{
    std::cout<<"\n";
std::cout<<aray[9]<<"\n";
}
 
 
void average( int * aray,int a)
{
int total=0;
for(int x=0;x<a;++x)
{
    total+=aray[x];
}
std::cout<<"\n"<<total/a<<"\n";
}
 
void qSort(int A[], int low, int high) {
      int i = low;                
      int j = high;
      int x = A[(low+high)/2];  
      do {
          while(A[i] < x) ++i;  
          while(A[j] > x) --j;  
          if(i <= j){           
              int temp = A[i];
              A[i] = A[j];
              A[j] = temp;
              
              i++; j--;
          }
      } while(i < j);
      if(low < j) qSort(A, low, j);
      if(i < high) qSort(A, i, high);
  }
0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
06.08.2013, 15:22 13
typedef'ом можно определить:
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
void minimum (int*,int);
void maximum (int*,int);
void average (int*,int);
 
#include<iostream>
using namespace std;
 
int main()
{  
setlocale(LC_ALL, "Russian");
typedef void (*fn_ptr)(int*, int);//
fn_ptr fp[3]={minimum, maximum, average};
int arr[4]={1,2,3,4};
for(int i=0; i<3; ++i){
    fp[i](arr, 4);
    cout<<arr[0]<<endl;
}
 
cout<<endl; 
system ("pause");
     return 0;
}
 
void minimum (int* ar, int sz)
{
  ar[0]=10; 
}
void maximum (int* ar, int sz)
{
 ar[0]=200; 
}
void average (int* ar, int sz)
{
 ar[0]=150; 
}
0
06.08.2013, 15:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2013, 15:22
Помогаю со студенческими работами здесь

Массив из ссылок
Здравствуйте! Допустим, есть 2 массива: string a = new string {&quot;lol&quot;, &quot;kek&quot;}; int b = new int...

Массив ссылок на TEdit
Имеются уже созданные компоненты edit1, edit2, ... ,edit16 . Надо присвоить массиву ссылки на эти...

Массив ссылок на jquery
Приветствую ребята! Подскажите как на jquery реализовать массив ссылок? То есть много ссылок на...

Редактировать массив ссылок
у меня есть массив ссылок, вида: ./i2018i217.html Мне нужно на все такие ссылки попереходить. Но...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru