Характеристика двумерного динамического массива. Создание программы по выводу на экран единичной матрицы с целыми элементами. Описание элементов синтаксиса выделения памяти под массив указателей при помощи операции new на языке программирования С .
Для создания двумерного динамического массива вначале нужно распределить память для массива указателей на одномерные массивы, а затем выделить память для одномерных массивов. При динамическом распределении памяти для массивов следует описать соответствующий указатель, которому будет присвоено значение адреса начала области выделенной памяти.Объявление двумерных динамических массивов Под объявлением двумерного динамического массива понимают объявление двойного указателя, то есть объявление указателя на указатель . Например: int ** a ; float ** m ;Выделение памяти под двумерный динамический массив При формировании двумерного динамического массива сначала выделяется память для массива указателей на одномерные массивы, а затем в цикле с параметром выделяется память под одномерные массивы ..При работе с динамической памятью в языке С существует 2 способа выделения памяти под двумерный динамический массив. 2. при помощи библиотечной функции malloc (calloc ) , которая предназначена для выделения динамической памяти.1. при помощи операции new Синтаксис выделения памяти под массив указателей: Имя_Массива = new Тип * [Размерность]; Синтаксис выделения памяти для массива значений: Имя_Массива[ ЗНАЧЕНИЕИНДЕКСА ]= new Тип[ Размерность ]; Имя_Массива - идентификатор массива, то есть имя двойного указателя для выделяемого блока памяти. Это выражение константного типа и вычисляется на этапе компиляции.П ример: int n , m ; // n и m - количество строк и столбцов //матрицы float ** matr ; // указатель для массива указателей matr = new float * [n ]; //выделение динамической //памяти под массив указателей for (int i =0; i using namespace std; int main() {int n , i , j ; //указатель для массива указателей int ** matr ; cout > n ; //выделение памяти под массив //указателей matr = new int *[ n ]; //выделение памяти для массива //значений for( i =0; i using namespace std; #include //объявление функции генерации массива void gen (int nn,int a, int b,int *** mas ); /*объявление функции вычисления сумму заданных элементов массива*/ int summa (int nn , int ** mas ); //объявление функции вывода массива void out (int nn,int ** mas );int main () {int **mass, n; int s; printf (" Sisestage n: "); scanf ("% d",&n ); printf ("\ NMASSIIVI loomine
"); gen(n,0,10,&mass); s=summa( n,mass ); out( n,mass ); printf ("\ NELEMENTIDE summa= % d",s ); return 0; }void gen(int nn , int a, int b, int *** mas ) {//функция генерации массива int i , j ; srand (time(NULL)*1000); * mas =(int**)malloc( nn * sizeof (int*)); for (i =0;i< nn;i ){ (* mas )[ i ]=(int*)malloc( nn * sizeof (int)); for (j=0;j< nn;j ) (* mas )[ i ][j]=rand()%(b-a) a; } } int summa(int nn , int ** mas ) {//функция вычисления суммы элементов диагоналей int i , j , sum =0; for (i =0;i< nn;i ) for (j=0;j< nn;j ) {if (( i == j ) || (i == nn - j-1)) {//нахождение элементов диагоналей sum = mas [i ][ j ]; //суммирование элементов диагоналей } } return sum; } void out (int nn,int ** mas ) {//функция вывода массива int i , j ; for (i =0;i< nn;i ) {for (j=0;j< nn;j ) printf ("M",mas[ i ][j]); printf ("
"); free (mas [i ]); } free (mas ); } В языке С предусмотрено использование указателя вида *** mass .
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы