- •Вариант 10
- •Void f1(float *b,float t)
- •Int main()
- •Ifstream f;
- •Int magic(int **a,int n,int m)
- •Int k,ssto,sd1,sd2,l,sstr,I,j;
- •Int main()
- •Ifstream f;
- •5. Как передаются одномерные массивы в качестве параметров в функцию?
- •3.Как передаются двумерные массивы в качестве параметров в функцию? Примеры.
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);