Алгоритмізація та програмування задачі сортування даних

Алгоритм процедури сортування у порядку зростання елементів побічної діагоналі (зліва направо) за допомогою методу вибору мінімального елементу. Підрахунок та визначення кількості перестановок. Виведення масиву на лист MS Excel до та після перетворень.

Рубрика Программирование, компьютеры и кибернетика
Вид практическая работа
Язык украинский
Дата добавления 26.09.2013
Размер файла 404,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Міністерство освіти та науки України

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

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

Розрахункова робота

з дисципліни:

Обчислювальна математика та програмування

На тему:

Алгоритмізація та програмування задачі сортування даних

Виконав: Савчук В.В.

Студент групи ХН-11

Перевірила: Абрамова A.O.

Київ 2012

Зміст

    • Завдання
    • Вступ
    • Теоретичні відомості
    • Блок схема
    • Програма
    • Результати роботи програми
    • Список використаної літератури
    • Індивідуальне завдання
    • В масиві D(n*n) з довільними значеннями за допомогою методу вибору мінімального елементу відсортувати у порядку зростання елементи що знаходяться на побічній діагоналі (зліва направо). Підрахувати та навести кількість перестановок. Масив D вивести на лист MS Excel до та після перетворень. Навести проти кожного рядка елемент головної діагоналі, що належить йому.

Вступ

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

В стандартних модулях існують процедури загального призначення, які можуть бути викликані з будь-якого місця в програмі. Процедури загального призначення близькі до внутрішніх операторів та функцій. В Visual Basic вони викликаються за іменем, можуть мати аргументи і кожна з них виконує конкретні дії. Процедури загального призначення дозволяють економити час, роблять програми більш компактними, зручними в перегляді (прочитанні), спрощують роботу програм.

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

В стандартному модулі можна створити три види процедур загального призначення:

1. Процедури типу Function (функція). Такі процедури викликаються з інших процедур. Вони можуть мати аргументи, через які одержують вхідні значення також повертати значення у вигляді імені. Зазвичай використовуються для обчислень.

2. Процедури типу Sub (підпрограми). Вони також викликаються за ім'ям з інших процедур, можуть мати аргументи, одержувати вхідні значення, виконувати відповідні дії і повертати значення. На відміну від функцій процедури Sub використовуються для одержання або обробки вхідних даних і відображення вихідних даних або встановлення властивостей значень.

3. Процедури типу Property (Властивість). Такі процедури використовуються для створення властивостей, які визначаються користувачем у програмах, і маніпулювання ними. Це корисно, коли вимагається створити засіб, який дозволяє використовувати засоби управління Visual Basic.

Щоб набрати будь-яку процедуру загального призначення необхідно:

У меню Разработать вибрати команду Добавить модуль (Add Module).

Відкриється вікно Add Module. Вибрати Новый та натиснути кнопку Open (Открыть). У вікні Code з'явиться новий стандартний модуль.

Ввести в стандартному модулі текст процедури.

ПРОЦЕДУРИ ТИПУ FUNCTION

Синтаксис:

Function ім'я (х1 [As тип], х2 [As тип],... хn [As тип]) As Тип

блок операторів

ім'я = А

[оператори ]

[Exit Function ]

End Function

де ім'я - ідентифікатор функції;

x1, х2, х3..., хn - формальні параметри, які можуть бути:

1) змінними;

2) масивом;

Exit Function - достроковий вихід із процедури.

Звернення до функції здійснюється за ім'ям:

ім'я (а1,а2, ...,аn),

де а1, а2,..., аn - фактичні аргументи.

Фактичними аргументами можуть бути:

· змінні (прості та з індексами);

· масив;

· константа;

· арифметичний вираз.

· Дія:

· При зверненні до процедури:

· 1) формальні параметри визначаються фактичними аргументами;

· 2) виконується процедура, в якій ім'я приймає значення;

· 3) значення передається в головний модуль.

ПРОЦЕДУРИ ТИПУ SUB

Синтаксис:

Sub ім'я (х1 [As тип], х2 [As тип],... хn [As тип])

блок операторів

[Exit Sub ]

End Sub

де ім'я - довільний ідентификатор процедури;

x1, х2, х3,..., хn - формальні параметри, які умовно поділяються на 2 групи:

· параметри, що визначаються фактичними аргументами (при звернені до процедури)

· параметри, що визначають фактичні аргументи (після виконання процедури) і ті і інші можуть бути:

1) змінною;

2) масивом;

3) константою;

4) арифметичним виразом.

Exit Sub - достроковий вихід з процедури.

Звернення до процедури - функції здійснюється за допомогою оператора Call

Синтаксис:

Call ім'я(а1,а2, ...,аn),

де а1, а2,...,аn - фактичні аргументи.

Сортування масиву

Метою сортування масиву даних є їх упорядкування у відповідності до заданої умови. Найбільш частою умовою сортування даних є їх розташування за зростанням або за спаданням.

Типові алгоритми сортування:

Метод бульбашки

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

Метод вибору

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

алгоритм сортування мінімальний елемент

Блок-схема

Код програми

Option Explicit

Sub Розрахункова_робота()

Dim i As Integer, j As Integer, n As Integer, c As String, a As Integer, b As

Integer, nomer As Integer, r As Integer, min As Integer, k As Integer

c = MsgBox("Очистити лист?", vbYesNo + vbQuestion, "Варіанти

виведення результату")

If c = vbYes Then Call cls

Open "d:/not.txt" For Output As #1

n = InputBox("Введіть розмір матриці", "Введення")

ReDim f(n, n) As Integer, t(n) As Integer

Call bform(f(), n, i, j)

Range("a1").Select

Cells(1, n / 2).Select

ActiveCell.Value = "Вихідний масив"

Print #1, "Вихідний масив"

ActiveCell.Offset(0, n / 2 + 4).Range("A1").Select

ActiveCell.Value = "Елементи головної діагоналі"

Cells(2, 2).Select

Call fprint(f(), n, i, j, a)

Range(Cells(2, 2), Cells(n + 1, n + 1)).Select

Call Границі

Call poshuk(i, j, f(), n, t())

k = ysort(n, t(), i, nomer, k, a, b, min, r)

Cells(n + 3, 2).Select

ActiveCell.Value = "Кількість перестановок елементів"

Print #1, " Кількість перестановок елементів "

ActiveCell.Offset(1, 0).Range("A1").Select

ActiveCell.Value = k

Print #1, k

Cells(n + 5, n / 2).Select

ActiveCell.Value = "Кількість перестановок елементів"

Print #1, " Кількість перестановок елементів"

ActiveCell.Offset(0, n / 2 + 4).Range("A1").Select

ActiveCell.Value = " Масив після перетворень"

Cells(n + 6, 2).Select

Call fprint(f(), n, i, j, a)

Range(Cells(n + 6, 2), Cells(2 * n + 5, n + 1)).Select

Call Границі

Cells(n + 5, n + 2).Select

a = n + 2

b = n + 5

For i = 1 To n

a = a - 1

b = b + 1

Cells(b, a).Select

Selection.Interior.Color = 2551

ActiveCell.Value = t(i)

ActiveCell.Offset(0, 1).Range("A1").Select

Next

Range("a1").Select

Close

End Sub

Private Sub bform(f() As Integer, n, i, j)

Randomize Timer

For i = 1 To n

For j = 1 To n

f(i, j) = CInt(Rnd * 100 - 50)

Next

Next

End Sub

Private Sub fprint(f() As Integer, n, i, j, a)

For i = 1 To n

For j = 1 To n

a = f(i, i)

Print #1, f(i, j),

ActiveCell.Value = f(i, j)

ActiveCell.Offset(0, 1).Range("A1").Select

Next

Print #1,

ActiveCell.Offset(0, 2).Range("A1").Select

ActiveCell.Value = a

ActiveCell.Offset(0, -2).Range("A1").Select

ActiveCell.Offset(1, -n).Range("A1").Select

Next

End Sub

Private Sub poshuk(i, j, f() As Integer, n, t() As Integer)

For i = 1 To n

j = n - i + 1

Cells(i + 1, j + 1).Select

Selection.Interior.Color = 2551

t(i) = f(i, j)

Next

End Sub

Private Sub Границі()

Selection.Borders(xlEdgeLeft).Weight = xlMedium

Selection.Borders(xlEdgeRight).Weight = xlMedium

Selection.Borders(xlEdgeBottom).Weight = xlMedium

Selection.Borders(xlEdgeTop).Weight = xlMedium

Selection.Borders(xlInsideHorizontal).Weight = xlThin

Selection.Borders(xlInsideVertical).Weight = xlThin

End Sub

Private Sub cls()

Cells.Select

Selection.ClearContents

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

Selection.Borders(xlEdgeLeft).LineStyle = xlNone

Selection.Borders(xlEdgeTop).LineStyle = xlNone

Selection.Borders(xlEdgeBottom).LineStyle = xlNone

Selection.Borders(xlEdgeRight).LineStyle = xlNone

Selection.Borders(xlInsideVertical).LineStyle = xlNone

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Selection.Interior.Pattern = xlNone

Range("a1").Select

End Sub

Function ysort(n, t() As Integer, i, nomer, k, a, b, min, r)

k = 0

For i = 1 To n - 1

nomer = minimal(t(), i, min, nomer, r, n)

If i <> nomer Then

a = t(i)

b = t(nomer)

t(nomer) = a

t(i) = b

k = k + 1

End If

Next

ysort = k

End Function

Function minimal(t() As Integer, i, min, nomer, r, n)

min = t(i)

nomer = i

For r = i + 1 To n

If t(r) < min Then

min = t(r)

nomer = r

End If

Next

minimal = nomer

End Function

Результати роботи програми:

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

1. Лекції з курсу інформаційних технологій

2. http://www.msoffice.nm.ru

3. http://www.mini-soft.ru/

4. Басков Н.Н. програмування в середовищі VBA

Размещено на Allbest.ru


Подобные документы

  • Схема алгоритму програми. Алгоритм процедури введення даних, виведення результатів сортування, побудови дерева, перестановки елементів, "вирішення сімейного конфлікту". Приклад для масиву з 20 елементів. Користувацьке вікно та побудова піраміди.

    курсовая работа [3,0 M], добавлен 21.02.2011

  • Мінімізація функції за методом карт Карно; розробка програм на мові асемблеру для Intel 8051: сортування масиву однобайтних даних у зовнішній пам’яті; формування послідовності прямокутних імпульсів; підрахунок кількості натискань на клавішу переривання.

    курсовая работа [196,2 K], добавлен 14.04.2012

  • Прості алгоритми сортування та їх програмування. Сортування вставками - алгоритм сортування на основі порівнянь. Злиття двох упорядкованих послідовностей (сортування злиттям). Ідея алгоритму швидкого сортування. Алгоритм сортування на основі порівнянь.

    лабораторная работа [631,3 K], добавлен 19.08.2010

  • Задача сортування даних в програмуванні. Алгоритм сортування обміном за критерієм або вибором, деревом, пірамідальне, швидке, сортування Хоара та метод цифрового сортування. Системні вимоги та інструкція для користувача. Алгоритм та лістинг програми.

    курсовая работа [20,6 K], добавлен 08.08.2009

  • Приклад реалізації крок за кроком методу сортування масивів "бульбашка", характеристика етапів. Графічне представлення методу, фрагмент програми його реалізації. Алгоритми сортування масивів методами вибору та вставок, опис особливостей їх реалізації.

    презентация [824,2 K], добавлен 26.11.2014

  • Регулярний тип даних мови Pascal, що дозволяє в програмі задавати структуру даних, яка називається масивом. Поняття одновимірного та багатовимірного масиву. Прямі методи сортування масивів, типи даних. Таблиця результативності гравців футбольної команди.

    лекция [411,2 K], добавлен 24.07.2014

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

    курсовая работа [90,3 K], добавлен 17.05.2011

  • Характеристика швидкодії алгоритмів сортування масивів прямим і бінарним включенням, методами "бульбашки", "камінця", та шейкерного відбору, визначення їх переваг та недоліків. Огляд функцій сортування із стандартної бібліотеки мови програмування С++.

    курсовая работа [452,1 K], добавлен 16.09.2010

  • Вивчення можливостей інтегрованого середовища розробки програм Qt Creator. Ознайомлення з основами паралельних обчислень мовою програмування С++ в цьому середовищі. Переваги та конструкції OpenMP, сортування масиву злиттям. Тестування програми сортування.

    курсовая работа [87,5 K], добавлен 28.10.2015

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

    курсовая работа [311,9 K], добавлен 09.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.