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

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

Восстановить пароль Регистрация
 
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
15.05.2013, 21:16     указатель на функцию #1
ребят помогите, плиз, ошибку выдает(
Дано: матрицы А[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++
Указатель на указатель на функцию C++
Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ? C++
C++ Указатель на функцию
Указатель на функцию C++
указатель на функцию C++
Указатель на функцию C++
Передача массива в функцию используя указатель на функцию C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 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
Ну какое задание дали
Yandex
Объявления
18.05.2013, 05:24     указатель на функцию
Ответ Создать тему
Опции темы

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