Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Приклад алгоритму та програми. Скласти програму множення двох матриць.

Структура програми | Типи даних | Приклад програми | Операторний блок | Приклади програм | Приклад алгоритму та програми | Приклад алгоритму та програми | Код програми | Приклад алгоритму та програми | Приклад алгоритму та програми |


Читайте также:
  1. Аттестация прикладных собак
  2. Гуменюк Ю.П. Організаційно-економічні механізми стимулювання розвитку рекреаційно-туристичного комплексу (на прикладі Тернопільської області). – Рукопис.
  3. Декоративно-прикладное искусство
  4. Занятия граждан военно-прикладными видами спорта
  5. ЗМІСТ ПРОГРАМИ
  6. ЗМІСТ ПРОГРАМИ
  7. ЗМІСТ ПРОГРАМИ

Скласти програму множення двох матриць.

Добутком матриці A та матриці B називається матриця С, елемент якої cij дорівнює скалярному добутку i -го вектор-рядка матриці А та j -го вектор-стовпця матриці B. Це означення можна записати у вигляді рівності C = AB, де

 

//ex7_16.cpp. Множення матриць
#include<iostream>
using namespace std;
typedef float Matrix[10][10]; //тип матриці
int i,j; //індекси елементів
Matrix A,B; //вхідні матриці
Matrix C; //матриця результату множення
int row1,row2; //кількість рядків вхідних матриць
int col1,col2; //кількість стовпців вхідних матриць
//=================== функція введення матриці ===============
void input(Matrix Mas,int& line, int& kol)
{
//Mas — покажчик на матрицю, яку вводять
//line,kol — кількість рядків і стовпців
do{
cout<<"input numbers of rows >=1 ";
cin>>line;
cout<<"input numbers of columns >=1 ";
cin>>kol;
if ((line<1) || (kol<1)) //контроль правильності введення
cout<<"it''s few, input more"<<endl;
}
while ((line<=1)&& (kol<=1)); //перевірка коректності даних
cout<<"input matrix:"<<endl;
for(int i=0;i<line;i++)
for(int j=0;j<kol;j++)
cin>>Mas[i][j];
}

//=========== процедура виведення матриці ====================
void output(Matrix Mas,int line, int kol)
{ //Mas — покажчик на матрицю
//line,kol — кількість рядків і стовпців
for(int i=0;i<line;i++) //вивести елементи матриці
{
for(int j=0;j<kol;j++)
cout<<Mas[i][j]<<" "; //вивести елементи рядка
cout<<endl; //перевести курсор на новий рядок
}
}
//================== множення матриць ========================
void mult()
{ //використовуються глобальні змінні A,B,C
int k; //індекс елемента скалярного добутку векторів
if (col1!=row2) //перевірка відповідності матриць
cout<<"multiplication is impossible — matrix are
unconformable"<<endl;
else
{
for (int i=0;i<row1;i++) //вибрати i-й вектор-рядок
for(int j=0;j<col2;j++) //вибрати j-й вектор-стовпець
{
C[i][j]=0;
for (k=0;k<col1;k++)
C[i][j]=C[i][j]+A[i][k]*B[k][j]; //скалярне множення
//векторів
}
}
}
//================== головна функція ==========================
int main(){
cout<<"input matrix A: "<<endl;
input(A,row1,col1); //ввести матрицю А
cout<<"input matrix B: "<<endl;
input(B,row2,col2); //ввести матрицю В
cout<<"matrix A:"<<endl;
output(A,row1,col1); //вивести матрицю А
cout<<"matrix B:"<<endl;
output(B,row2,col2); //вивести матрицю В
mult(); //перемножити A та B
cout<<"result of multiplication:"<<endl;
output(C,row1,col2); //вивести матрицю C
system("pause");
}

Рис. 8.1. Результати роботи програми множення матриць

8.3. Варіанти завдань

1. У заданій квадратній матриці знайти суму значень елементів, що розташовані на головній діагоналі або вище від неї і є більшими за всі елементи, розташовані нижче від головної діагоналі.

2. У заданій квадратній матриці значення деяких діагональних елементів дорівнюють нулю. Переставити рядки або стовпці матриці таким чином, щоб діагональні елементи стали ненульовими. Якщо це неможливо зробити, вивести відповідне повідомлення.

3. Задати квадратну матрицю, ввівши кількість рядків і стовпців з клавіатури. Упорядкувати значення елементів головної діагоналі за алгоритмом вставки, а значення побічної діагоналі — за алгоритмом обміну. Визначити кількість порівнянь та обмінів під час сортування.

4. Здійснити обхід матриці по спіралі за годинниковою стрілкою, починаючи від її лівого верхнього кута. Вивести елементи матриці у порядку їх обходу.

5. У селищі, де N будинків, розташованих уздовж прямої дороги з однієї сторони на рівних відстанях, прокладають телефонний зв’язок. Зазначено, скільки телефонних апаратів треба встановити в кожному будинку. Кожен телефон має бути з’єднаний з АТС окремим кабелем. Визначити, в якому будинку необхідно встановити АТС, щоб сумарна довжина кабелів була мінімальною.

6. Задана дійсна матриця poзмipy n*m, в якій не всі елементи дорівнюють нулю. Одержати нову матрицю шляхом ділення вcix елементів заданої матриці на її найбільший за модулем елемент. Замінити діагональні елементи матриці на найбільший за модулем елемент.

7. Задана дійсна матриця розміру m*n. Знайти середнє арифметичне найбільшого і найменшого значень її елементів. Поміняти місцями найбільше і найменше значення елементів.

8. В заданій дійсній квадратній матриці вимірністю n*n, знайти суму елементів рядка, в якому знаходиться елемент з найменшим значенням. Вважаємо, що такий елемент єдиний.

9. Задана дійсна матриця вимірності m*n. Упорядкувати її рядки за неспадністю суми елементів рядків. Вивести масив сум елементів рядків та матрицю.

10. В заданій дійсній матриці m*n переставити місцями рядок, що містить елемент з найменшим значенням з рядком, що містить найбільше значення. Вважаємо, що ці елементи єдині.

11. Задана дійсна матриця розміру n*m, всі елементи якої різні. В кожному рядку вибираємо елемент з найменшим значенням, потім серед цих чисел вибираємо найбільше. Вказати індекси елементу із знайденим значенням.

12. Задане натуральне число n, матриця цілих чисел А розміром 2*n. Знайти суму тих її елементів з другого рядка, які мають в першому рядку рівні за значенням елементи.

13. Задана квадратна матриця цілих чисел розмірності n*n. Знайти найменше із значень елементів стовпчика, який має найбільшу суму модулів елементів.

14. Задана дійсна квадратна матриця розмірністю n*n. В рядках з від¢ємним елементом на головній діагоналі знайти суму елементів, найбільший з усіх елементів та його індекс.

15. Задана дійсна квадратна матриця розмірності n*n. Знайти суми тих елементів, які розміщені відповідно нижче, вище та на головній діагоналі, в рядках, що починаються з від¢ємного елементу.

16. Визначити кількість особливих елементів мат риці та вивести їх значення та індекси. Особливим елементом називається такий, що є більшим за суму інших елементів свого стовпчика та в рядку зліва від нього розташовані менші за нього елементи, а справа – більші.

17. Задати матрицю довільної вимірності та вектор. Визначити транспоновану матрицю та здійснити множення матриці на вектор.

18. Для заданої цілочислової матриці визначити індекси та значення її сідлових точок. Елемент матриці називається сідловою точкою, якщо він є найменшим у своєму рядку та найбільшим у своєму стовпчику.

19. Для заданої матриці довільної вимірності визначити скалярний добуток рядка з найбільшим елементом на стовпчик з найменшим елементом.

20. Задати матрицю розмірності m´n (m, n ³ 3). Починаючи з лівого нижнього кута матриці та рухаючись лише праворуч і догори, досягти її правого верхнього кута і вибрати при цьому такі значення елементів, що їх сума буде максимальною. Вивести перелік вибраних елементів.

21. Знайти добуток довільної кількості матриць довільної розмірності. Кількість матриць, які треба перемножити, їх розмірність і значення елементів задаються користувачем.

22. Для заданої матриці та вектора довільної вимірності здійснити множення матриці та вектор та вектора на матрицю.

23. Для заданої матриці довільної вимірності визначити вектор, -ий елемент котрого дорівнюватиме 1, якщо елементи -го рядка матриці впорядковані за спаданням, та 0, якщо -ий рядок матриці є симетричним.

24. В заданій матриці довільної вимірності обчислити суму елементів парних рядків, найбільші значення у непарних рядках, середнє арифметичне серед від’ємних елементів матриці та індекси нульових елементів.

 

8.4 Контрольні запитання

1. Дати означення матриці.

2. Як зображується матриця в оперативній пам’яті?

3. Як здійснити доступ до елементів масиву чи матриці?

4. Як здійснити доступ до елемента матриці, користуючись значенням тільки одного індексу?

5. Означити типові операції над матрицями.

 

Обробка рядків
Лабораторна робота 9

9.1 Теоретичні відомості


Дата добавления: 2015-08-27; просмотров: 599 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Код програми| Визначення рядка

mybiblioteka.su - 2015-2024 год. (0.011 сек.)