Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РГР.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
90.49 Кб
Скачать

Розрахункова частина Опис розробленого алгоритму розв’язання задачі із посиланням на блок-схему

Блок-схеми створюють для того, щоб ми могли розуміти, для відтворення самої суті програми. Блок-схеми відображують власне програму. В певних комірках вказуються значення, в інших – словесно вказана просто окрема дія. Стрілочками ми зображуємо алгоритм виконання.

  1. Оголошуємо необхідні в ході програми змінні

  2. Задаємо розмірності масиву

  3. Оголошуємо та визначаємо цілочисельний масив

  4. Задаємо значення масиву за допомогою датчика випадкових чисел

  5. Використовуємо змінні для зберігання номеру рядка та стовпця елементів відповідно

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

  7. Найбільші елементи рядків переставили в них так, що при підсумковій розстановці вони утворили головну діагональ.

  8. Виведення

Текст програми із її коротким описом

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

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