Операції над квадратною матрицею

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Національний технічний університет України

«Київський політехнічний інститут»









Курсова робота







з курсу



«Обчислювальна техніка, алгоритмічні мови і програмне забезпечення»



	

	

	

	

	

	

	

	

	

	

	

	

	

	Київ 2009


Зміст



	Завдання. Математичне розшифрування завдання

	Лістинг програми

	Виведення результатів роботи програми

	Опис роботи програми

Список літератури






1. Математичне розшифрування завдання



На квадратному аркуші картатого паперу розміру 8*8 кліток намальовано декілька прямокутників, кожний прямокутник складається з кліток, прямокутники не накладаються один на одного й не стикаються. Дана цілочисельна квадратна матриця порядку 8, у якій елемент рівняється «0», якщо відповідна клітка належить якому-небудь прямокутнику, і відмінний від «0» в іншому випадку. Визначити кількість прямокутників.







Матриці. Основні означення

Прямокутна таблиця чисел а (I, j), і = 1,2,…, m; (j = 1,2,…, n, складена з m рядків та n стовпців і записана у вигляді:



 або 



називається матрицею. Поняття матриці вперше ввели англійські математики У. Гамільтон і Д. Келі. Коротко матрицю позначають так:








Де  – елементи матриці, причому індекс i в елементі  означає номер рядка, а j – номер стовпця, на перетині яких стоїть даний елемент.

Добуток числа рядків m на число стовпців n називають розміром матриці і позначають mxn. Якщо хочуть вказати розмір mxn матриці А, то пишуть .

Матриця, в якої число рядків дорівнює числу стовпців, називається квадратною. Кількість рядків (стовпців) квадратної матриці називається її порядком. Матриця, у якої всього один рядок, називається матрицею-рядком, а матриця, у якої всього один стовпець, – матрицею-стовпцем. Дві матриці  та  називаються рівними, якщо вони однакових розмірів і мають рівні відповідні елементи:. Нульовою називається матриця, у якої всі елементи дорівнюють нулю. Позначається така матриця буквою О. В квадратних матрицях виділяють головну і побічну діагональ.

Для виконання завдання потрібно знаходити суму елементів матриці стовпця і рядка, на які вказують індекси елемента, і замінити цією сумою сам елемент матриці.



2. Лістинг програми



Private Sub Command1_Click()

Const n = 5

Dim i, j As Byte

Dim a (n, n) As Byte, m(56) As Byte

n1 = 0

n2 = 0

ch = 0

ch1 = 0

For i = 1 To n

For j = 1 To n

Randomize

a (i, j) = Rnd(1)

Next j

Next i

For i = 1 To n

m(i) = a (i, n – 1)

For j = 1 To n

Print a (i, j),

Next j

Print

Next i

Print «–»

For i = 1 To n

For j = 1 To n

If a (i, j) = 0 Then

n1 = n1 + 1

If n1 > 1 Then

a (i, j – 1) = 1

End If

Else

If n1 > 1 Then

a (i, j – 1) = 1

ch = ch + 1

End If

n1 = 0

End If

Next j

If n1 > 1 Then

ch = ch + 1

End If

n1 = 0

Next i

For i = 1 To n

If a (i, n) = 0 And m(i) = 0 Then

a (i, n) = 1

End If

Next i

Print «===============================»

For j = 1 To n

For i = 1 To n

If a (i, j) = 0 Then

n1 = n1 + 1

Else

If n1 > 1 Then

ch = ch + 1

End If

n1 = 0

End If

Next i

If n1 > 1 Then

ch = ch + 1

End If

n1 = 0

Next j

Print «–»

For i = 1 To n

For j = 1 To n

Print a (i, j),

Next j

Print

Next i

Print «*****************************»

Print ch

End Sub

Private Sub Command2_Click()

End

End Sub



3. Виведення результатів роботи програми





Змн.

Арк.

№ докум.

Підпис

Дата

Арк.







   12

Курсова робота

Після запуску програми в Visual Basic на моніторі з`являється вікно програми, на якому виведено дві кнопки: «розрахунок» і «кінець».





	

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

	

	




Тобто, у цій матриці склалося три прямокутники. Для завершення програми натискаємо на кнопку «кінець».



4. Опис роботи програми



Формування значень елементів масиву випадковим чином і з клавіатури і виведення їх на екран.

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

Дуже часто значення елементів масиву вводяться з клавіатури. Цей спосіб завдання інформації занадто трудоємок при роботі з масивами великих розмірів. Для налагодження широкого класу алгоритмів такої введення інформації повинен бути замінений формуванням елементів масиву випадковим чином. Для цього використовують вбудовані засоби Турбо Паскаля: процедуру Randomize та функцію Random. Ви вже стикалися з цими коштами. Сьогодні ж наша задача створити процедуру введення елементів в масив і процедуру виведення елементів на екран.

Наведемо приклад заповнення масиву випадковими числами. Ця процедура повинна прийняти в якості вхідних параметрів масив, кількість рядків і стовпців, задані користувачем з клавіатури в основному розділі операторів. Так як наша процедура буде впливати на порожній вихідний масив, то його ми повинні передати по посиланню. Кількість рядків і стовпців достатньо передати копіями за значенням.

Procedure InsertMas1 (Var X: MyArray; n, m: integer); 

Var 

i, j: integer; 

Begin 

Randomize; 

for i:= 1 to n do {пробегая последовательно строки массива} 

for j:= 1 to m do {просмотрим каждую ее ячейку текущего столбца} 

X [i, j]:= Random(50); {и запишем туда случайное число, которое сформирует компьютер в диапазоне [0..49]} 

End; комп'ютер Procedure InsertMas1 (Var X: MyArray; n, m: integer); 

Var 

i, j: integer; 

Begin 

Randomize; 

for i:= 1 to n do {пробегая последовательно строки массива} 

for j:= 1 to m do {просмотрим каждую ее ячейку текущего столбца} 

X [i, j]:= Random(50); {и запишем туда случайное число, которое сформирует компьютер в диапазоне [0..49]} End;

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

Розглянемо процедуру виведення елементів масиву на екран. Для того, щоб вивести наш масив на екран у вигляді таблиці, поставимо при переході до нової рядку оператор writeln і застосуємо формат виводу елементів (: 5).

Procedure PrintMas (X: MyArray; n, m: integer); 

Var 

i, j: integer; 

Begin 

for i:= 1 to n do {пробегая последовательно строки и столбцы массива} 

begin 

for j:= 1 to m do 

write (X[i, j]:5); {выведем элемент массива на экран, выделив ему 5 знакомест} 

writeln; {переход на новую строку} 

end; 

End;

Завдання. Наберіть програму-шаблон для роботи з двовимірні масивами. Як ви вже знаєте з попередньої теми, вона повинна містити дві процедури введення та процедуру виведення елементів заданого масиву. Основний розділ операторів повинен містити діалог з користувачем і захист програми від введення неприпустимих значень для кількості рядків і стовпців. Збережіть файл у відповідному каталозі на своїй дискеті.

Розгляньте процедуру, вирішальну наступну задачу.

Задача. Дана таблиця дійсних чисел. Порахуйте суму всіх чисел у таблиці.

Procedure Summa (A: MyArray; n, m: integer; Var S: real); 

Var 

i, j: integer; 

Begin 

S:= 0; 

for i:= 1 to n do 

for j:= 1 to m do 

S:= S+A [i, j]; 

End.

Зверніть увагу, що всередині циклу з лічильником i організовано цикл з лічильником j. В результаті сумуються на початку числа 1й рядки (i = 1, при j = 1, 2,…, m), потім сумуються числа 2й рядки (i = 2, при j = 1, 2,…, m) і т.д.

У даній програмі в тілі одного циклу міститься інший цикл. Такі цикли, як Ви вже знаєте, називаються вкладеними. Причому цикл з лічильником i є зовнішнім, а цикл з лічильником j – внутрішнім. Не забувайте основне правило при написанні вкладених циклів: останній оператор внутрішнього циклу має або передувати, або збігатися з останнім оператором зовнішнього циклу. Вкладені цикли нагадують матрьошок, вкладених одна в іншу.






Список літератури



«Турбо Паскаль 7.1» – Бучко Д.І., Харків: «Харківська політехніка», 2005.

«Інформатика, алгоритмічні мови» – Олійник Н.В., Сидоренко Ю.В., Львів: «Замкова гора», 2004.

Web, Internet.