Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по СИ.doc
Скачиваний:
18
Добавлен:
23.08.2019
Размер:
433.15 Кб
Скачать

Лабораторная работа №3 Двумерные массивы

Пример задания: Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

Пример решения задачи:

#include <stdio.h>

int main(int argc, char* argv[])

{

/* Объявляем и инициализируем матрицу 8х8 */

int matrix[8][8] = {

{ 2, 7, 2, 7, 1, 4, 0, 3 },

{ 1, 0, 7, 6, 0, -8, 3, 5 },

{ 2, 7, 1, 8, 1, 4, 9, 3 },

{ 9, 2, 8, 5, 2, 0, 0, 6 },

{ 7, 1, 1, 3, 9, 3, 9, 1 },

{ 8, 2, 4, 9, 1, -6, 4, 9 },

{ 0, 3, 9, 0, 9, 4, 8, 8 },

{ 1, 8, 3, 2, 8, 2, 8, 0 }

};

int i, j, iSumm; /* Счетчик и переменная для хранения суммы */

bool bFlag; /* Флаг */

/*----------------------------------------------*/

/* П Е Р В А Я Ч А С Т Ь З А Д А Н И Я */

/*----------------------------------------------*/

printf("k = ");

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

{

/* Присваиваем Флагу исходное значение */

bFlag = true;

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

{

/* Сравниваем элемент i-й строки j-го столбца с элементом j-й строки i-го столбца. В случае их несоответствия присваиваем Флагу значение Ложь и прерываем цикл по j конструкцией break */

if (matrix[i][j] != matrix[j][i])

{

bFlag = false;

break;

}

}

/* В случае сохранения флагом исходного значения выводим на экран номер соответствующей строки */

if (bFlag) printf("%d ", i);

}

/*----------------------------------------------*/

/* В Т О Р А Я Ч А С Т Ь З А Д А Н И Я */

/*----------------------------------------------*/

printf("\n\n");

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

{

/* Присваиваем переменным исходные значения */

bFlag = false;

iSumm = 0;

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

{

/* При нахождение хотя бы одного отрицательного элемента присваиваем Флагу значение Истина, обозначающее необходимость вывода Суммы на экран */

if (matrix[i][j] < 0) bFlag = true;

/* Суммируем значения элементов i-й строки */

iSumm += matrix[i][j];

}

/* В случае нахождения в строке хотя бы одного отрицательного элемента выводим на экран сумму элементов i-й строки */

if (bFlag) printf("Сумма элементов строки #%d = %d\n", i, iSumm);

}

return 0;

}

Результат выполнения программы:

k = 2 6

Сумма элементов строки #1 = 14

Сумма элементов строки #5 = 31

Индивидуальные задания:

Вариант 1

Дана целочисленная прямоугольная матрица. Определить:

1) количество строк, не содержащих ни одного нулевого элемента;

2) максимальное из чисел, встречающихся в заданной матрице более одного раза.

Вариант 2

Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента.

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

Вариант 3

Дана целочисленная прямоугольная матрица. Определить:

  1. количество столбцов, содержащих хотя бы один нулевой элемент;

  2. номер строки, в которой находится самая длинная серия одинаковых элементов.

Вариант 4

Дана целочисленная квадратная матрица. Определить:

  1. произведение элементов в тех строках, которые не содержат отрицательных элементов;

  2. максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

Вариант 5

Дана целочисленная квадратная матрица. Определить:

  1. сумму элементов в тех столбцах, которые не содержат отрицательных элементов;

  1. минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.

Вариант 6

Дана целочисленная прямоугольная матрица. Определить:

  1. сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;

  1. номера строк и столбцов всех седловых точек матрицы.

ПРИМЕЧАНИЕ:

Матрица А имеет седловую точку Аij, если Aij является минимальным элементом в i-й строке и максимальным в j-м столбце.

Вариант 7

Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом.

Найти сумму элементов в тех строках, которые содержат хотя бы один отрица­тельный элемент.

Вариант 8

Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.

Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрица­тельный элемент.