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

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

Войти
Регистрация
Восстановить пароль
 
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
#1

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

15.05.2013, 21:16. Просмотров 274. Ответов 2
Метки нет (Все метки)

ребят помогите, плиз, ошибку выдает(
Дано: матрицы А[N,M] и B[K,L]. Составить программу, использующую для управления меню, пунктам которого соответствуют указатели на функции, реализующие:
а) поиск максимального элемента двумерного массива;
б) поиск минимального элемента двумерного массива;
в) нахождение среднего арифметического элементов двумерного массива.

вот мой код:
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <stdio.h>
#include <conio.h>
#include <ctime>
#include <clocale>
#include <stdlib.h>
 
typedef int (*my_fun)(int **x, int n, int m);
void vvod(int **x, int nx, int mx)
{
int i,j;
for(i=0;i<nx;i++)
 
for(j=0;j<mx;j++)
scanf("%d", &x[i][j]);
}
void vivod(int **x, int nx, int mx)
{
int i,j;
for (i=0;i<nx;i++)
{
printf ("\n");
for (j=0;j<mx;j++)
printf ("%2d", x[i][j]);
}
}
int min(int **x, int m, int n)
{
int i, j;
int min=x[0][0];
for (int i=0;i<m;i++)
for (j=0;j<n;j++)
if (x[i][j]<min)
{
min=x[i][j];
}
return min;
}
void menu()
{
printf ("\nВыберите действие над массивами:\n");
printf ("1.Нахождение среднего арифметического элементов двумерного массива.\n");
printf ("2.Поиск максимального элемента двумерного массива.\n");
printf ("3.Поиск минимального элемента двумерного массива.\n");
printf ("4. Выход.\n");
}
int sred(int **x, int nx, int mx)
{
int s=0;
int i, j;
{for (int i=0;i<nx;i++)
for (j=0;j<mx;j++)
{
s=s+x[i][j];
 
}
}
int sred1=int (float(s/(nx*mx)));
return sred1;
}
int max(int **x, int m, int n)
{
int i, j;
int max=x[0][0];
for (int i=0;i<m;i++)
{
for (j=0;j<n;j++)
if (x[i][j]>max)
{
max=x[i][j];
}
}
return max;
}
int vvod(my_fun fun,int **x,int n, int m)
{
fun(x, n, m);
return 0;
}
 
int main()
{
setlocale(LC_ALL, "rassian");
setlocale(LC_ALL, "rus");
srand(time(NULL));
printf("Введите размерность массива А:\n");
printf ("введите количество строк и столбцов\n");
int n, m, i;
scanf ("%d %d",&n, &m);
printf ("Введите элементы массива A\n");
int **masA=new int *[n];
for (i=0; i<n; i++)
masA[i] = new int[m];
vvod(masA,n,m);
printf ("Массив А");
vivod(masA,n,m);
printf("\nВведите размерность массива B:\n");
printf ("введите количество строк и столбцов\n");
int k,p;
scanf ("%d %d", &k, &p);
printf ("Введите элементы массива B\n");
int **masB=new int *[k];
for (i=0;i<k;i++)
masB[i]=new int [p];
vvod (masB, k,p);
printf ("Массив B");
vivod (masB, k, p);
int h;
do
{
menu();
printf ("Выберите пункт\n");
scanf ("%d", &h);
if (h==3)
{
printf ("Минимальный элемент массива А:\n");
printf ("%d\n", vvod(min,masA,n,m));
printf ("Минимальный элемент массива B:\n");
printf ("%d\n", vvod(min,masB,k,p));
}
if (h==1)
{
printf ("Среднее арифметическое массива A:\n");
printf ("%.1f\n", vvod(sred,masA, n,m));
printf ("Среднее арифметическое массива B:\n");
printf ("%.1f\n", vvod (sred, masB, k,p));
}
if (h==2)
{
printf ("Максимальный элемент массива А:\n");
printf ("%d\n", vvod(max,masA,n,m));
printf ("Максимальный элемент массива B:\n");
printf ("%d\n", vvod(max,masB,k,p)); 
}
}
while(h!=4);
delete [] masA;
delete [] masB;
getch();
return 0;
}
помогите ошибку найти)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 21:16     указатель на функцию
Посмотрите здесь:

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

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

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

Указатель на функцию - C++
Нужно написать код, чтобы в нем был массив их трех указателей на функции #include&lt;iostream&gt; #include&lt;locale&gt; #include&lt;cmath&gt; using...

Указатель на функцию - C++
Что то я туплю. Допустим есть какая то функция: void foo1(int n) { int j = foo2(n) // можно ли так? ..... } Или...

Указатель на функцию - C++
Всем привет! Компилятор выдает ошибку при использовании указателя на функцию. Задача такая FileName.h ...

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

Указатель на функцию - C++
Здравствуйте! Есть вот такой элемент кода: SimpleCat* FunctionTwo (SimpleCat * theCat); int main() { .................... ...

Указатель на функцию - C++
Делаю класс кнопки для проекта. Есть такой код: class CUIButton { public: CUIButton(); virtual ~CUIButton(); private: void...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
16.05.2013, 06:11     указатель на функцию #2
Функция vvod, должно быть так:
C++
1
2
3
4
int vvod(my_fun fun, int** x, int n, int m)
{
   return fun(x, n, m);
}
P.S.: хотя смысла в ней вообще никакого.
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
18.05.2013, 05:24  [ТС]     указатель на функцию #3
Ну какое задание дали
Ответ Создать тему
Опции темы

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