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

Возврат и передача в функцию двумерного массива - C++

Восстановить пароль Регистрация
 
Zo_0m
24 / 24 / 12
Регистрация: 22.10.2011
Сообщений: 160
30.05.2012, 23:41     Возврат и передача в функцию двумерного массива #1
У меня вот есть такая программа:
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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#define n 5
 
void input_matr(int a[n][n])
{
int i,j;
printf("Введите элементы матрицы А: \n");
for (i=0;i<n;i++)
   for (j=0;j<n;j++)
     scanf("%d",&a[i][j]);
}
int *mas_x(int (*a)[n], int x[n],
void (*pfunc)(int [n][n]))
{
int i,j,k;
pfunc(a);
 
for (i=0;i<n;i++)
{ k=0;
    for (j=0;j<n;j++)
       if (a[i][j]<k) k=a[i][j];
          if (k>=0) a[i][0]=1; 
             else a[i][0]=-1;}
return *a ;
}
int recurs(int *arr, int i)
{
    int k=i;       
        if (arr[i] != 1 && i>0) 
        { 
          i=i-1;
          k = recurs(arr, i);
        }
    return k;
}
void output(const int x[], const int *a)
{
int i,j;
printf("Матрица А:\n");
for (i=0;i<n;i++)
{
    for (j=0;j<n;j++)
      printf("%5d",a[i][j]);
    printf("\n");
    
}
 
printf("Массив Х:\n");
for (i=0;i<n;i++)
  printf("%5d",x[i]);
printf("\n");
 
}
 
void inputile(int a[][n])
{
int i, j;
FILE *filik;
filik=fopen("in.txt", "r"); 
if(filik)
{
   for(i=0;i<n;i++)
     for(j=0;j<n;j++)
      fscanf(filik, "%d", &a[i][j]);
   fclose(filik); 
}
else
    printf("Входной файл отсутствует");
}
void savefile(int a[][n], int x[n], int y)
{ int i,j;
    FILE *filik;
    filik=fopen("out.txt", "w");
for(i=0;i<n;i++)
{
   for(j=0;j<n;j++)
     fprintf(filik, "%5d", a[i][j]);
     fprintf(filik, "\n");
}
fprintf(filik,"Массив X:\n");
for (i=0;i<n;i++)
    fprintf(filik,"%d ",x[i]);
fprintf(filik,"\n");
fprintf(filik,"Y=%d элемент",y);
fclose(filik);
}
int main()
{
    setlocale(LC_CTYPE,"");
    int a[n][n],key,x[n];
    void (*pfunc)(int a[n][n]);
do
{
printf("Ввод матрицы:\n1 - с клавиатуры\n2 - \
из файла\n");
scanf("%d",&key);
}
while (key!=1 && key!=2);
switch (key)
{
case 1: pfunc=&input_matr;
break;
case 2: pfunc=&inputile;
}
output(x,mas_x(a,x,pfunc));
if (recurs(x,n)>0)
  printf("Y=%d",int(n/2+1));
else printf("значения Y нет");
savefile(a,x,recurs(x,n));
_getch();
}
Что она делает это неважно)

меня интересует вот такой вопрос:
Я возвращаю двумерный массив через указатель:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int *mas_x(int (*a)[n], int x[n],
void (*pfunc)(int [n][n]))
{
int i,j,k;
pfunc(a);
 
for (i=0;i<n;i++)
{ k=0;
    for (j=0;j<n;j++)
       if (a[i][j]<k) k=a[i][j];
          if (k>=0) a[i][0]=1; 
             else a[i][0]=-1;}
return *a ;
}
а каким образом мне передать теперь его в функцию вместо ????:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void output(const int x[], const int ????)
{
int i,j;
printf("Матрица А:\n");
for (i=0;i<n;i++)
{
    for (j=0;j<n;j++)
      printf("%5d",a[i][j]);
    printf("\n");
    
}
 
printf("Массив Х:\n");
for (i=0;i<n;i++)
  printf("%5d",x[i]);
printf("\n");
 
}
или же чтото изменить в вызове функции:
C++
1
output(x,mas_x(a,x,pfunc))
Подскажите пожалуйста, думаю для Вас это не должно быть таким непонятным как для меня
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2012, 23:41     Возврат и передача в функцию двумерного массива
Посмотрите здесь:

C++ Передача двумерного массива в функцию
C++ Передача двумерного массива в функцию
C++ Передача двумерного массива в функцию
Передача двумерного массива в функцию C++
Передача в функцию двумерного массива C++
Передача двумерного массива в функцию C++
Передача двумерного массива в функцию C++
C++ Передача двумерного массива в функцию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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