ЛР1. Указатели и массивы, строки, массивы строк

Задание 1 (50 баллов)

Дано натуральное значение N. Создать динамический двумерный массив N*N, заполнить нулями и предложить пользователю двухуровневое меню управления матрицей:

  1. Вывод содержимого массива
  2. Заполнение массива
    1. Вывести содержимое массива
    2. Обнулить массив
    3. Заполнить массив случайными значениями
    4. Изменить элемент массива по его координатам. Если координаты выходят за пределы массива, внести в структуру массива минимально необходимые для выполнения операции изменения.
    5. Выйти в предыдущее меню
  3. Манипуляции с массивом
    1. Вставить строку. Указывается количество элементов в строке и номер строки, после которой будет произведена вставка. Если номер отрицательный - вставка в начало массива. Если номер равен или больше номеру последней строки - вставка в конец массива.
    2. Удалить строку. Указывается номер строки.
    3. Отсортировать строки массива по возрастанию суммы элементов строк.
    4. Повернуть массив на 90 градусов. Указывается направление поворота. Перед поворотом массив приводится к прямоугольной форме дополнением нулями коротких строк до размеров самой длинной строки.
    5. Выйти в предыдущее меню
  4. Завершить работу с программой
В каждый момент времени на экране должен отображаться отображается только один уровень меню.

Задание 2 (30-50 баллов)

Разработать утилиту, которая будет выводить на экран переменные окружения, в значениях которых встречаются слова, переданные в командной строке. Поиск производится только в значениях переменных, не затрагивая их имен. Каждая найденная переменная выводится в двух строках: имя и значение. Затем - пустая строка-разделитель.

При решении задачи запрещается использовать системные функции для манипуляции с переменными окружения, следует обращаться к передаваемому в функцию main массиву env. Параметры программы получать из массива argv.