Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABA_1sem.doc
Скачиваний:
5
Добавлен:
10.02.2016
Размер:
1.4 Mб
Скачать

Лабораторная работа №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]. (Формируем элементы транспонированной матрицы)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]