Весь листинг программы на C++
#include
#include
using namespace std;
const int N = 10;
int main()
{
int mass[N], max, min;
cout << "Элементы: |";
for(int r = 0; r {
mass[r] = rand()%99;
cout << mass[r] << "|";
}
cout << endl;
max = mass[0];
min = mass[0];
for(int r = 1; r {
if(max < mass[r]) max = mass[r];
if(min > mass[r]) min = mass[r];
}
cout << "Min: " << min << endl;
cout << "Max: " << max << endl;
return 0;
}
Задание на лабораторную работу.
Содержание отчёта
Титульный лист.
Цель работы.
Краткие теоретические сведения.
Алгоритм решения задачи.
Выводы по лабораторной работе.
Ответы на контрольные вопросы.
Составить алгоритм и написать программу
А)
|
Выполнить сортировку массива методом выбора:
[45 + “номер в журнале”, 16 + “номер в журнале”, 78 + “номер в журнале”, 53 + “номер в журнале”, 96 + “номер в журнале”, 3 + “номер в журнале”, 25 + “номер в журнале”, 10 + “номер в журнале”]
|
Б)
|
Найти максимальный/минимальный элемент:
[45 + “номер в журнале”, 16 + “номер в журнале”, 78 + “номер в журнале”, 53 + “номер в журнале”, 96 + “номер в журнале”, 3 + “номер в журнале”, 25 + “номер в журнале”, 10 + “номер в журнале”]
|
Контрольные вопросы
Что такое сортировка массива, приведите примеры.
Укажите шаги сортировки массива методом выбора.
Лабораторная работа № 3. Программа умножения матриц. Определение порядка действий.
1. Цель работы
Научиться умножать матрицы при определенном условии, составить порядок действий для умножения матриц.
2. Теоретический материал
В данной лабораторной работе мы рассмотрим алгоритм умножения матриц и приведем его код на языке программирования С.
Умножать можно такие прямоугольные матрицы, в которых число столбцов первой матрицы равно числу строк во второй (про такие матрицы говорят, что их форма согласована), то есть их размерность должна быть следующая: матрица A[m, n], матрица B[n, q].
В результате умножения получится матрица C[m, q]:
элементы которой находятся по формуле:
На языке C алгоритм умножения матриц может быть записан следующим образом:
1
2
3
4
5
6
7
|
for(i = 0; i < m; i++)
for(j = 0; j < q; j++)
{
C[i][j] = 0;
for(k = 0; k < n; k++)
C[i][j] += A[i][k] * B[k][j];
}
|
Пример 1. Вычислить AB и , если , .
Решение. Так как A=A3×2 , а B=B2×2 , то произведение возможно и результатом операции умножения будет матрица C=C3×2 , а это матрица вида
Вычислим элементы матрицы C :
c11=a11⋅b11+a12⋅b21=1⋅1+(−1)⋅2=−1c11=a11⋅b11+a12⋅b21=1⋅1+(−1)⋅2=−1
c12=a11⋅b12+a12⋅b22=1⋅1+(−1)⋅0=1c12=a11⋅b12+a12⋅b22=1⋅1+(−1)⋅0=1
c21=a21⋅b11+a22⋅b21=2⋅1+0⋅2=2c21=a21⋅b11+a22⋅b21=2⋅1+0⋅2=2
c22=a21⋅b12+a22⋅b22=2⋅1+0⋅0=2c22=a21⋅b12+a22⋅b22=2⋅1+0⋅0=2
c31=a31⋅b11+a32⋅b21=3⋅1+0⋅2=3c31=a31⋅b11+a32⋅b21=3⋅1+0⋅2=3
c32=a31⋅b12+a32⋅b22=3⋅1+0⋅0=3c32=a31⋅b12+a32⋅b22=3⋅1+0⋅0=3
Итак, .
Выполним произведения в более компактном виде:
Найдем теперь произведение D=BA=B2×2⋅A3×2. Так как количество столбцов матрицы B (первый сомножитель) не совпадает с количеством строк матрицы A (второй сомножитель), то данное произведение неопределенно. Умножить матрицы в данном порядке невозможно.
Ответ. . В обратном порядке умножить данные матрицы невозможно, так как количество столбцов матрицы B не совпадает с количеством строк матрицы A .
Свойства произведения матриц:
Ассоциативность (A⋅B)⋅C=A⋅(B⋅C)
Ассоциативность по умножению (μ⋅A)⋅B=μ⋅(A⋅B)
Дистрибутивность A⋅(B+C)=A⋅B+A⋅C, (A+B)⋅C=A⋅C+B⋅C
Умножение на единичную матрицу Em⋅Am×n=Am×n⋅En=Am×n
В общем случае умножение матриц не коммутативно, т.е. AB≠BA.
Do'stlaringiz bilan baham: |