Циклы. Инициализация массива размерности n случайными целыми положительными значениями от 0 до 32767, страница 12

{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);     //прототип функции с параметром «указатель на указатель на целое»