Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчёт лр 5.docx
Скачиваний:
5
Добавлен:
01.12.2018
Размер:
82.78 Кб
Скачать

3.Как передаются двумерные массивы в качестве параметров в функцию? Примеры.

Двумерные массивы, как и одномерные, передаются в функцию по адресу (передается адрес первого элемента первой строки - &a[0][0]). Поэтому функция работает с самим массивом, а не с его копией, и может его изменить.

Если в функцию передается двумерный статический массив, то необходимо не только передать адрес первого элемента первой строки - &a[0][0], но дать возможность компилятору определять адреса начала всех строк передаваемой матрицы. Для этого в списке формальных параметров у двумерного массива обязательно нужно указывать вторую размерность, которая задает количество элементов в строке (количество столбцов) матрицы.

Если в функцию передается двумерный динамический массив, то в списке формальных параметров для параметра массива достаточно объявить двойной указатель (т. е. указатель на массив указателей на строки матрицы).

В операторе вызова функции в списке фактических параметров и в том и в другом случае для параметра массива указывается имя массива.

Информация о количестве элементов двумерного массива (количество строк и количество столбцов матрицы) должна передаваться через отдельные параметры.

Пример:

Передача двумерного статического массива в качестве параметра в функцию:

const int row = 5;

const int row = 5;

void Func (int arr [row][col], int rows, int cols);

или

void Func (int arr [][col], int rows, int cols)

Передача двумерного динамического массива в качестве параметра в функцию:

void Func (int **arr, int rows, int cols);

Вызов функции:

Func (arr1, r, с);

4-5.Как организуется запись двумерного массива в текстовый (бинарный) файл и чтение двумерного массива из текстового (бинарного) файла?Примеры.

Запись и чтение элементов двумерного массива в файл организуется с помощью цикла, в котором считывается (записывается) элемент в файл.

Например:

// запись элементов из тестового файла в массив

for(i = 0;i < nrow;i++)

{ for(j = 0;j < ncol;j++)

f2 << a[i][j]<< " ";

f2 << "\n";

//чтение элементов массива из тестового файла

for(i = 0; i < nrow; i++)

for(j = 0;j < ncol; j++)

f >> a[i][j];

cout << "\n";

// запись элементов массива в бинарный файл

for(i = 0; i < nrow; i++)

for(j = 0; j < ncol; j++)

fwrite(&a[i][j],sizeof(int),1, f);

//чтение элементов массива из бинарного файла

for(i=0; i<n; i++)

for (j=0; j<m; j++)

fread(&b[i][j],sizeof(int),1, f);