
- •Розрахунково-графічна робота
- •Алгоритмізація та програмування»
- •Загальне завдання
- •Індивідуальне завдання
- •Короткі теоретичні відомості
- •Розрахункова частина Опис розробленого алгоритму розв’язання задачі із посиланням на блок-схему
- •Текст програми із її коротким описом
- •Результат
- •Висновки
- •Список використаної літератури
Розрахункова частина Опис розробленого алгоритму розв’язання задачі із посиланням на блок-схему
Блок-схеми створюють для того, щоб ми могли розуміти, для відтворення самої суті програми. Блок-схеми відображують власне програму. В певних комірках вказуються значення, в інших – словесно вказана просто окрема дія. Стрілочками ми зображуємо алгоритм виконання.
Оголошуємо необхідні в ході програми змінні
Задаємо розмірності масиву
Оголошуємо та визначаємо цілочисельний масив
Задаємо значення масиву за допомогою датчика випадкових чисел
Використовуємо змінні для зберігання номеру рядка та стовпця елементів відповідно
Переставляємо рядки матриці так, щоб вони відповідали порядку спадання найбільших елементів кожного із рядків.
Найбільші елементи рядків переставили в них так, що при підсумковій розстановці вони утворили головну діагональ.
Виведення
Текст програми із її коротким описом
Public Sub ollala()
Dim u() As Integer, n As Integer 'введення змінних
Cells.Select 'виділення діапазону комірок
Selection.ClearContents 'очистити виділене
n = InputBox("введіть розмірність матриці")
ReDim u(n, n) As Integer 'повідомляємо програмному середовищу розмірність матриці
Call Inp(n, u()) 'фактичні
Range("A1").Value = "Матриця"
ActiveCell.Offset(0, n + 1).Value = "макс"
Call output(n, u())
Range("A1").Select
Call body(n, u(), u())
Range("a1").Select
ActiveCell.Offset(n + 4, 0).Select
ActiveCell.Value = " Результат"
ActiveCell.Offset(0, n + 1).Value = "макс"
Call output(n, u())
End Sub
Sub Inp(n As Integer, x() As Integer) 'формальні
Dim i As Integer, j As Integer
Randomize Timer 'оператор ініціалізації функції Rnd
For i = 1 To n
For j = 1 To n
x(i, j) = Rnd * 100
Next j
Next i
End Sub
Sub output(n As Integer, x() As Integer)
Dim i, j As Integer
For i = 1 To n
ActiveCell.Offset(1, 0).Select
For j = 1 To n
ActiveCell.Offset(0, j).Value = x(i, j)
Next j
Next i
End Sub
Sub body(n As Integer, m() As Integer, y() As Integer)
Dim i As Integer, j As Integer, mmax() As Integer, c As Integer, k As Integer, a As Single, kk As Integer
ReDim mmax(n) As Integer
ActiveCell.Offset(0, n + 1).Select
For i = 1 To n
mmax(i) = m(i, 1)
For j = 2 To n
If mmax(i) < m(i, j) Then
mmax(i) = m(i, j)
End If
Next j
ActiveCell.Offset(i, 0).Value = mmax(i)
Next i
Range("a1").Select
ActiveCell.Offset(n + 4, n + 1).Select
For i = 1 To n - 1 'сортування
For j = i + 1 To n
If mmax(i) < mmax(j) Then
a = mmax(j)
mmax(j) = mmax(i)
mmax(i) = a
kk = kk + 1
msg = msg & "Рядок № " & i & " міняється з рядком № " & j & vbNewLine
For k = 1 To n
c = m(j, k)
m(j, k) = m(i, k)
m(i, k) = c
Next k
End If
Next j
Next i
msg = "Кількість перестановок " & kk & vbNewLine & msg
MsgBox msg
For i = 1 To n
For j = 1 To n
If i = j Then
m(i, j) = Max(i, n, m())
End If
Next j
Next i
For i = 1 To n
For j = 1 To n
y(i, j) = m(i, j)
Next j
ActiveCell.Offset(i, 0).Value = mmax(i)
Next i
End Sub
Function Max(ii, n As Integer, m() As Integer)
Dim jj As Integer
Max = m(ii, 1)
For jj = 1 To n
If Max < m(ii, jj) Then
Max = m(ii, jj)
End If
Next jj
End Function