Язык программирования С, лабораторная работа 1.
Указатели и массивы

Инструментарий

Для подготовки текста решений задач следует использовать произвольный текстовый редактор, желательно - с подсветкой синтаксиса (geany, редактор файлового менеджера mc и т.д.).

Для компиляции - компилятор gcc.

Задания

  1. Дано натуральное значение N. Создать квадратную матрицу N*N, заполнить ее нулями и предложить пользователю двухуровневое меню управления матрицей:
    1. Вывести содержимое матрицы
    2. Заполнение матрицы
      1. Вывести содержимое матрицы
      2. Обнулить матрицу
      3. Заполнить матрицу случайными значениями
      4. Изменить элемент матрицы по его координатам
      5. Выйти в предыдущее меню
    3. Матричные операции
      1. Вывести содержимое матрицы
      2. Зеркально отразить матрицу по оси X
      3. Повернуть матрицу на 90 градусов по часовой стрелке
      4. Транспонировать матрицу
      5. Вычислить определитель матрицы
      6. Выйти в предыдущее меню
    4. Завершить работу с программой
    В кажды момент времени на экране должен отображаться отображается только один уровень меню. Каждый элемент меню должен быть реализован в виде функции с передачей ему матрицы в качестве параметра. По окончании работы каждая функция должна сообщить о результатах.

  2. Решить предыдущую задачу без массивов, с использованием указателей.

Для ввода-вывода данных использовать функции scanf, printf.

При необходимости использовать математические функции из библиотек stdlib.h и math.h.

При использовании функций из math.h следует указывать компилятору подключать при сборке программы динамическую библиотеку libm.so, содержащую код математических функций. Это обеспечивает опция -lm в командной строке компилятора. Например: gcc my.c -o my.run -lm скомпилирует программу my.c в исполняемый файл my.run, подключив библиотеку libm.so.

Для поиска нужной функции использовать утилиту man, которая обеспечивает доступ из консоли к системе помощи linux, в том числе - к описаниям системных библиотек и функций на языке С. Например man stdlib.h возвратит описание содержимого библиотеки stdlib, в том числе - заголовки всех функций библиотеки. Найдя требуемую функцию, ее описание можно получить, например, так: man abs, где abs - имя функции.