{static int A[n+1][m];
int i, j, k=1;
for (i=0; i<n; i++) //заполнение и вывод матрицы до вставки строки
for(j=0; j<m; j++)
{A[i][j] = rand() % 6;
printf ("%2d%c", A[i][j], (j==m-1)?'\n':' ');
}
printf ("\n\n");
for (i=n-1;i>=k+1; i--) //перемещение строк вниз,освобождение строки с номером k+1
for (j=0; j<m; j++)
A[i+1][j] =A[i][j];
for (j=0; j<m; j++)
A[k+1][j] = rand() % 6; //заполнение k+1-ой строки
for (i=0; i<n+1; i++) //вывод матрицы после вставки строки
for(j=0; j<m; j++)
printf ("%2d%c", A[i][j], (j==m-1)?'\n':' ');
return 0;
}
Передача двумерного массива в качестве параметра:
Размерности массива можно задать с помощью глобальных констант:
#include <iostream.h> //способ 1
#include <conio.h>
constintn=2; //глобальные переменные – размеры матрицы
constintm=3;
intadder (int [n][m]); //прототип функции
main()
{ int isum;
staticintiarray[n][m]={5, 1, 6, 20, 15, 0};
isum= adder(iarray);
cout << "isum=" << isum << endl; //или cout << "isum=" << adder(iarray) << endl;
getch();
return 0;
}
intadder (intiarray[n][m]) //определение функции
{int ipartial =0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
ipartial +=iarray[i][j];
return (ipartial);
}
При объявлении функции можно не указывать первую размерность:
#include <iostream.h> //способ 2
#include <conio.h>
constintn=2; //глобальные параметры – размеры матрицы
const int m=3;
int adder (int [ ][m]);
main()
{ int isum;
static int iarray[n][m]={5, 1, 6, 20, 15, 0};
isum= adder(iarray);
cout << "isum=" << isum << endl; //или cout << "isum=" << adder(iarray) << endl;
getch();
return 0;
}
int adder (int iarray[ ][m])
{
int ipartial=0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
ipartial +=iarray[i][j];
return (ipartial);
}
#include <iostream.h> //способ 3
#include <conio.h>
constintn=2; //глобальные переменные – размеры матрицы
constintm=3;
voidadder (int [ ][m], int *); //функция не возвращает значения, // для возврата значения– второй параметр
main()
{ int isum;
int iarray[n][m]={5, 1, 6, 20, 15, 0};
adder(iarray, &isum); //вызов функции, передача второго параметра для возврата суммы
cout << "isum=" << isum << endl;
getch();
return 0;
}
void adder (int (*piarray)[m], int *pipartial)
{
*pipartial=0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
*pipartial +=piarray[i][j];
}
#include <iostream.h> //способ 4
#include <conio.h>
constintn=2; // глобальные переменные – размеры массива
const int m=3;
void adder (int (*)[m], int *, int);
main()
{
int iarray[n][m]={5, 1, 6, 20, 15, 0};
int isum, i=1;
adder(iarray, &isum, i);
cout << "isum=" << isum << endl;
getch();
return 0;
}
void adder (int (*piarray)[m], int *pipartial, int k)
{
*pipartial=0;
for (int i=0; i<k; i++) //параметр k получил значение, равное значению переменной i из main()
for (int j=0; j<m; j++)
*pipartial +=piarray[i][j];
}
Cпособы передачи двумерного массива в функцию с использованием вспомогательных массивов указателей на одномерные массивы.
#include <iostream.h> //способ 5
#include <conio.h>
main()
{ int isum;
intadder (int **, int, int); //прототип функции с параметром «указатель на указатель на целое»
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.