1 Текст задания
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером n на m.
Найти сумму модулей элементов, расположенных выше главной диагонали.
Предусмотреть заполнение матрицы числами автоматически и при вводе с клавиатуры.
Выполнить программу с динамическим выделением памяти.
Входные данные:
nможет принимать значения от 3 до 99 включительно
mможет принимать значения от 3 до 99 включительно
Выходные данные:
количество локальных минимумов и сумма элементов, расположенных выше главной диагонали.
0 -4 2
1 4 -1
2 -3 0
Количество локальных минимумов равно k=2
a[0][1]=-4, a[2][1]=-3
Сумма модулей элементов выше главной диагонали p=4
2 Спецификация программы
При запуске программы перед пользователем появляется меню и предлагается выбрать пункт меню путем нажатия клавиши с цифрой, соответствующей выбранному пункту. Меню имеет следующие пункты:
Ввод данных.
Пользователю предлагается ввести количество строк и столбцов, введенное число должно принадлежать интервалу от 2 до 100. Затем появляется сообщение о том, как пользователь желает заполнить матрицу: автоматически либо с клавиатуры. После нажатия пользователем соответствующей клавиши появляется сама матрица (при автоматическом заполнении) либо номер элемента матрицы (при заполнении с клавиатуры).
Решение.
Выводится матрица, локальные минимумы и их количество, сумма модулей элементов выше главной диагонали.
О программе.
Выводится фамилия, имя, группа разработчика программы и текст задания.
Выход.
Выход из консольного окна и завершение работы программы.
После каждого выбора пункта плана появляется сообщение, что для того, чтобы вернуться в меню, необходимо нажать любую клавишу.
Конструктивно программа выполнена в виде десяти вызываемых функций и одной основной функции _tmain(), которая осуществляет управление вызываемыми функциями и поддерживает диалог с пользователем.
Вызываемые функции:
voidtext(void); вывод фамилии, имени, группы разработчика
программы и текст задания
voidmenu(void); отображение меню в консольном окне
intrazmer_matrici(char*stroka,charc); функция ввода количества строк и
столбцов
intrnd(intrang_min,intrang_max); функция генерации элементов
матрицы случайным образом
voidinput_elem(int**a,intn,intm); заполнение матрицы числами
int**memory(intn,intm); динамическое выделение памяти для
массива
void output(int **a,int n,int m); вывод матрицы
voidz_1(int**a,intn,intm); функция нахождения количества
локальных минимумов
voidz_2(int**a,intn,intm); функция нахождения суммы модулей
элементов, расположенных выше главной
диагонали
voidend(void); функция для возвращения в меню
Входные данные программы приведены в таблице 1.
Выходные данные программы приведены в таблице 2.
Вспомогательные переменные приведены в таблице 3.
Таблица 1-Входные данные
Тип |
Идентификатор |
Диапазон |
Назначение |
int |
n |
-32768…32767 |
Количество строк матрицы |
int |
m |
-32768…32767 |
Количество столбцов матрицы |
int |
t |
-32768…32767 |
Управление программой – пункт плана |
Таблица 2-Выходные данные
Тип |
Идентификатор |
Диапазон |
Назначение |
int |
k |
-32768…32767 |
Количество локальных минимумов |
int |
p |
-32768…32767 |
Сумма элементов матрицы, расположенных выше главной диагонали |
int |
a[i][j] |
-32768…32767 |
Элемент матрицы |
Таблица 3- Вспомогательные переменные
Тип |
Идентификатор |
Диапазон |
Назначение |
bool |
flag |
True и False |
Проверка наличия ввода элементов |
char |
*stroka |
-128…127 |
Указатель на символьные строки ("строк", "столбцов") |
char |
c |
-128…127 |
Указатель на символ, обозначающий строки и столбцы |
int |
A |
-32768…32767 |
Переменная для ввода размерности матрицы |
int |
i |
-32768…32767 |
Номер строки |
int |
j |
-32768…32767 |
Номер столбца |
int |
h |
-32768…32767 |
Номер столбца, с которого считается сумма |