- •Общие указания
- •Установка программного обеспечения
- •Основные библиотеки
- •Лабораторная работа №1
- •Основные теоретические сведения Создание проекта
- •Написание программного кода
- •Компиляция и устранение ошибок
- •Запуск программы на выполнение и ее останов
- •Ввод/вывод информации на экран
- •Генератор случайных чисел
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Лабораторная работа №2
- •Основные теоретические сведения
- •Переменные и оператор присваивания
- •Арифметические операторы
- •Математические функции
- •Оператор if
- •Логические операторы
- •Оператор switch
- •Цикл while
- •Цикл for
- •Инструкция return
- •Решение типовых задач
- •Задание к лабораторной работе Варианты заданий к задаче 1
- •Варианты заданий к задаче 2
- •Варианты заданий к задаче 3
- •Контрольные вопросы
- •Лабораторная работа №3
- •Основные теоретические сведения
- •Одномерные массивы
- •Двумерные массивы
- •Алгоритмы
- •Решение типовых задач
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №4
- •Основные теоретические сведения. Функции
- •Самодиагностика
- •Лабораторная работа №4
- •Основные теоретические сведения.
- •Транспонирование матриц
- •Сложение матриц
- •Умножение матриц
- •Задание на лабораторную работу №4
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №5
- •Основные теоретические сведения.
- •Работа с файлами
- •Решение типовых задач
- •Задание на лабораторную работу №5
- •Варианты заданий
- •Производная функции на интервале
- •Решение типовых задач
- •Задание на лабораторную работу №6
- •Вычисление интегральной функции
- •Решение типовых задач
- •Задание на лабораторную работу №7
- •Контрольные вопросы
- •Лабораторная работа №8
- •Основные теоретические сведения.
- •Решение типовых задач
- •Задание на лабораторную работу №8
- •Варианты заданий
- •Контрольные вопросы
- •Литература
Лабораторная работа №4
Цель: усовершенствовать навыки программирования на примере решения задач матричной алгебры.
Задачи:
1) Повторить теоретические сведения о создании и использовании статических массивов в языке Си++.
2) Разработать программу решающую одну из задач матричной алгебры.
Основные теоретические сведения.
Основные теоретические сведения о массивах были изложены в лабораторной работе №3. Данная лабораторная работа (№4) является логическим продолжением предыдущей и призвана закрепить навыки работы со статическими массивами на примере решения конкретных задач матричной алгебры.
Напомним основные моменты работы со статическими массивами.
1) Как и переменные, массивы необходимо объявлять. Запись double dArray[13][12] означает объявление двумерного массива dArray типа double размером 13×12 элементов, т.е. 13 строк и 12 столбцов.
2) Размер статических массивов определяется заранее и его нельзя менять. Если в задаче необходимо использовать массив переменного размера, то можно объявить массив заведомо большего размера и использовать в ходе решения только необходимую его часть. Например, в задаче требуется определить матрицу порядка n. Можно принять, что n <= 20 и объявить двумерный массив размером 20×20. Этого хватит для решения задачи для любого n <= 20.
3) Индексация в массивах начинается с нуля. Это означает, что для массива dArray индексы изменяются от 0 до 12 по строкам и от 0 до 11 по столбцам.
4) При работе с массивами широко используются циклы for. Следующий участок кода показывает пример обнуления двумерного массива dArray:
int i, j;
for ( i = 0; i < 13; i++ )
{
for ( j = 0; j < 12; j++ )
{
dArray[i][j] = 0;
}
}
5) Для инициализации больших массивов целесообразно использовать генератор случайных чисел.
Предположим, что по условию задачи массив dArray необходимо заполнить действительными числами, а затем определить количество положительных и отрицательных элементов массива. Примем следующее допущение: элементы массива будут иметь значения от –100 до +200. Тогда инициализацию массива можно провести следующим образом:
srand((unsigned)time(NULL));
int i, j;
for ( i = 0; i < 13; i++ )
{
for ( j = 0; j < 12; j++ )
{
dArray[i][j] = ( 300. * rand() / RAND_MAX ) - 100;
}
}
6) В ряде случаев условие задач может быть неполным и для решения целесообразно принимать дополнительные ограничения, например, задать диапазоны изменения входных данных и т.п.
Теперь вы обладаете достаточными знаниями для самостоятельного решения следующих задач.
Транспонирование матриц
Транспонированной называется матрица (АТ), в которой столбцы исходной матрицы (А) заменяются строками с соответствующими номерами.
Если А = (аij), то АТ = (аji).
Из определения следует, что если исходная матрица А имеет размер m × n, то транспонированная матрица АТ имеет размер n × m.
АЛГОРИТМ 3
Алгоритм операции транспонирования.
Исходные данные:
А[m×n] — исходная матрица.
Выходные данные:
M[n×m] — транспонированная матрица.
Вспомогательные переменные:
i, j — переменные для организации циклов.
Шаг 1. [Цикл по i]. Выполнить шаг 2 при i = 0,…,n – 1 и после этого завершить алгоритм.
Шаг 2. [Цикл по j]. Выполнить шаг 3 при j = 0,…,m – 1.
Шаг 3. [Установить М[i,j]]. М[i,j] = А[j,i]. (Формируем элементы транспонированной матрицы)