Символьные массивы – строки. Функции для работы с текстом. Двумерные массивы – матрицы, страница 4

Начальный адрес массива                 Matrix

Количество строк                              Row Count

Количество столбцов                        Column Count

Размер типа                                     ST = sizeof (int)

Длина строки                                   ST * Column Count

Пример 6.            Найти максимальный и минимальный элемент матрицы. Поменять их местами и вывести полученную матрицу.

Для работы с матрицей создадим функции ввода (Enter_m()), обработки (Min_max()) и вывода матрицы (Print_m()):

#include<conio.h>

#include<stdio.h>

#define N 7

void Enter_m (int arr[][N], int &m, int &n)

{

 int i, j;

 printf ("\n Введи размерности матрицы:");

 scanf ("%d %d", &m, &n);

 printf (" Введи матрицу :\n");

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

        for ( j=0; j < n; j++)  scanf("%d", &arr [i][j]);

}

void Min_max (int arr[][N], int m, int n, int& min, int& max)

{

int i, j, s_min=0, c_min=0, s_max=0, c_max=0 ;

min = max = arr[0][0];

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

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

        {

        if (arr [i][j] < min)  {min = arr [i][j]; s_min =i; c_min =j;}

        if (arr [i][j] > max) {max = arr [i][j]; s_max=i; c_max=j;}

        }

arr [s_min][c_min] = max;

arr [s_max][c_max] = min;

}

void Print_m (int arr[][N], int m, int n)

{

 int i, j;

 printf (" Матрица – результат :\n");

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

{

for( j=0; j < n; j++) printf ("%3d ", arr[i][j]);

printf("\n");

        }

}

void main()

{

 int ks, kc, i, j, m[N][N];

 Enter_m (m, ks, kc);

 Min_max (m, ks, kc, j, i);

 Print_m (m, ks, kc);

 printf ("\n Минимальное  число: %d", j);

 printf ("\n Максимальное число: %d", i);

 getch ();

}

Варианты заданий

1.  Написать функцию транспонирования матрицы.

2.  Дана  матрица размером M*N.  Переставляя ее строки и столбцы,  добиться того, чтобы наибольший элемент оказался в верхнем левом углу.

3.  Уменьшить матрицу А  размером M*N путём удаления столбца с максимальным элементом.

4.  Дана матрица целых чисел. Упорядочить её строки по возрастанию значений их первых элементов.

5.  Преобразовать матрицу A размером M*M путём построчного вычитания элементов побочной диагонали.

6.  Дана матрица целых чисел. Упорядочить её строки по возрастанию сумм их элементов.

7.  Дана матрица целых чисел. Упорядочить ее строки по возрастанию значений их наибольших элементов.

8.  Дана матрица M на N. Переставляя её строки и столбцы, добиться того, чтобы наименьший элемент оказался в верхнем левом углу.

9.  Уменьшить матрицу Z размером M*N путём вычёркивания строки, в которой стоит минимальный по величине элемент.

10.   Упорядочить строки матрицы по возрастанию наименьших элементов строк.

11.   Переставить местами строки матрицы M размером M*N, содержащие минимальный и максимальный по величине элементы.

12.   Для заданной матрицы найти сумму положительных и отрицательных элементов по  каждой строке и сформировать из этих сумм двумерный массив, который вывести на печать.

13.   Определить k - количество "особых" элементов матрицы С, считая элемент "особым", если он больше суммы остальных элементов своего столбца.

14.   В матрице размером M*N выбрать и вывести на экран строки, содержащие заданное значение К.

15.   Вычислить сумму положительных элементов матрицы А размером N*N, расположенных над главной диагональю.