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

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

Восстановить пароль Регистрация
 
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
10.02.2013, 20:54     Передача двумерного массива в функцию #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
#include <iostream> 
#include <locale.h>
#include <conio.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define row 10
#define col 10
 
 
using namespace std;
void input_mas(int mat[][col],int m);
 
int func_Abs(int mat[][col],int m);
void cross_mas(int mat[][col],int m,int strokaMaxEl);
void output_mas(int mat[][col],int m);
 
int main()
{
    setlocale (0,"rus");
    
int mat[row][col];
input_mas(mat,row);
int a=func_Abs (mat,row);
cross_mas (mat,row,a);
output_mas (mat,row);
getch ();
return 0;
}
 
void input_mas(int mat[][col],int m)
{
    int a,b;
    srand(time(NULL));
 
//запрашиваем верхнюю и нижнюю границы рандомизации
cout << "Enter a: ";
cin >> a;
cout << "Enter b: ";
cin >> b;
 
 
    cout << "Матрица ДО имеет вид:" << '\n';
    for (int i = 0; i<row; i++)
    {
        for (int j=0;j<col;j++)
        {
             mat[i][j] = a + rand() % (b - a + 1);
             cout << setw(4) << mat[i][j];
        }
        cout << '\n';
    }
}
 
int func_Abs (int mat[][col],int m)
{
int AbsMax=0;
    int strokaMaxEl=0;
 
        AbsMax = abs (mat [0][0]);
        for (int i=0; i<row; i++)
        {
            for (int j=0; j<col; j++)
            {
                if (abs (mat[i][j])>AbsMax)
                {
                    AbsMax = abs (mat [i][j]);
                    strokaMaxEl=i;
                }
 
            }
        }
        return  strokaMaxEl;
}
 
void cross_mas(int mat[][col],int m,int strokaMaxEl)
{
    for (int i=0;i<col;i++)
    {
        
        int temp=mat[strokaMaxEl][i];
        mat[strokaMaxEl][i]=mat[0][i];
        mat[0][i]=temp;
 
    }
}
void output_mas(int mat[][col],int m)
{
    cout << "Матрица после:" << '\n';
    for (int i=0; i<row;i++)
    {
        for (int j=0;j<col;j++)
        {
            cout << setw(4) << mat [i][j];
        }
        cout << '\n';
    }
}
В качестве параметров функции передавала адрес начала массива и количество элементов в строке массива, , а также фактическое количество строк.
Скажите, обязательно ли при таком методе передачи двумерного массива в функцию использовать директиву препроцессора #define...просто, когда хотела объявить размер массива как в функции main (), как:
const int row = 10;
const int col= 10;

программа не работала, типа не видела переменные col в функциях и прототипах?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 20:54     Передача двумерного массива в функцию
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
10.02.2013, 21:22     Передача двумерного массива в функцию #2
Вы объявили константу в функции main, а значит её область видимости не выходит за границы функции main. чтобы ваш код работал, Вам нужно объявить эти константы в глобальном пространстве. Вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream> 
#include <locale.h>
#include <conio.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
const int row = 10;
const int col= 10;
 
//остальной код....
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
11.02.2013, 00:14     Передача двумерного массива в функцию #3
На самом деле, когда используются функции нет места глобальным переменным.поэтому правильней будет передать массив, на самом деле его адрес, и обе размерности, особо код не увеличится, но функции перестанут зависеть от любых внешних переменных.
Yandex
Объявления
11.02.2013, 00:14     Передача двумерного массива в функцию
Ответ Создать тему
Опции темы

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