Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в Excel.doc
Скачиваний:
21
Добавлен:
03.05.2019
Размер:
1.48 Mб
Скачать

2.6. Учебные задачи по программированию сортировки данных

1. Обработка одномерного массива чисел

Задача 1.1. Отсортировать массив действительных чисел по возрастанию (неубыванию) абсолютных величин элементов массива. Отсортированные данные вывести на экран и печать.

Задача 1.2. Отсортировать массив натуральных чисел по возрастанию значений последней цифры в записи числа.

Задача 1.3. Отсортировать массив натуральных чисел по возрастанию значений первой цифры в записи числа.

Задача 1.4. Отсортировать массив натуральных чисел по убыванию значения суммы цифр в записи числа.

Задача 1.5. Отсортировать элементы массива натуральных чисел, расположенные на четных местах, по возрастанию, а элементы, расположенные на нечетных местах - по убыванию.

Задача 1.6. Отсортировать по возрастанию все положительные элементы массива.

Задача 1.7. Отсортировать по убыванию все отрицательные элементы массива.

Задача 1.8. Отсортировать элементы массива действительных чисел в порядке возрастания длины их дробной части.

Задача 1.9. Отсортировать первую половину массива по возрастанию, а вторую - по убыванию значений элементов.

Задача 1.10. Проверить наличие упорядоченности элементов массива по возрастанию или по убыванию.

2. Обработка двухмерного массива чисел

Задача 2.1. Отсортировать строки двумерного массива чисел по возрастанию значений элементов в первом столбце.

Задача 2.2. Отсортировать строки двумерного массива чисел по возрастанию значений элементов, расположенных на главной диагонали.

Задача 2.3. Отсортировать строки двумерного массива чисел по убыванию значений элементов, расположенных на побочной диагонали.

Задача 2.4. Отсортировать столбцы двумерного массива чисел по возрастанию значений элементов в первой строке.

Задача 2.5. Отсортировать столбцы двумерного массива чисел по возрастанию значений элементов, расположенных на главной диагонали.

Задача 2.6. Отсортировать столбцы двумерного массива чисел по убыванию значений элементов, расположенных на побочной диагонали.

Задача 2.7. Отсортировать элементы, расположенные на главной диагонали двухмерного массива по возрастанию, а элементы, расположенные на побочной диагонали - по убыванию.

Задача 2.8. Первый столбец массива содержит номер года, второй - номер месяца, третий - число (день). Отсортировать все строки массива в порядке возрастания значения даты.

Задача 2.9. Отсортировать по возрастанию элементы массива, расположенные по его периметру (в направлении по часовой стрелке).

Задача 2.10. Отсортировать диагонали массива, расположенные над главной диагональю по возрастанию значений первого элемента каждой диагонали.

3. Обработка символьной информации

Задача 3.1. Отсортировать все символы в строке символов длиной n по алфавиту (по коду ASCII).

Задача 3.2. Отсортировать по алфавиту все символы в строке, которые являются буквами кириллицы.

Задача 3.3. Отсортировать по алфавиту (коду ASCII) все символы в строке, которые не являются буквами.

Задача 3.4. Отсортировать по алфавиту список фамилий учащихся класса (одномерный массив строк).

Задача 3.5 Отсортировать по алфавиту все слова, которые встречаются в строке символов.

Задача 3.6. Отсортировать элементы в одномерном массиве строк в порядке возрастания количества слов в строке.

Задача 3.7. Отсортировать слова, содержащиеся в строке символов в порядке убывания их длины.

Задача 3.8. Отсортировать все символы в двухмерном массиве символов в направлении слева-направо, сверху-вниз (как одну строку символов).

Задача 3.9. Отсортировать по алфавиту все символы строки, расположенные в позициях с p по q (включительно).

Задача 3.10. Строка имеет длину 8 символов и представляет собой значение даты в форме: ‘дд.мм.гг’. Отсортировать по убыванию значения даты одномерный массив, состоящий из таких строк.

Лабораторная работа 3.

Составление алгоритмов сортировка данных.

Задание:

1.Составить алгоритм и программу сортировки данных:

1.1 методом обмена (алгоритм «пузырька»);

1.2 методом вставки;

1.3 методом выбора.

Алгоритм «пузырька»: исходные данные в столбце «С» (размер массива 200 значений), результаты сортировки – в столбце «D».

В качестве варианта (вариант 2) предложено использовать логическую переменную Switch, которая может быть равна FALSE (ложно) или TRUE (истинно).

Sub Bubble()

Dim SortArray(200)

i = 1

While Range("C" + LTrim$(Str$(i)))

SortArray(i) = Range("C" + LTrim$(Str$(i)))

i = i + 1

Wend

Limit = i - 1

Do

Key = 0 ‘вариант2: Switch = FALSE

For Row = 1 To (Limit - 1)

If SortArray(Row) > SortArray(Row + 1) Then

A = SortArray(Row)

SortArray(Row) = SortArray(Row + 1)

SortArray(Row + 1) = A

Key = Row

End If

Next Row

Limit = Key

For Row = 1 To i - 1

Range("D" + LTrim$(Str$(Row))) = SortArray(Row)

Next Row

Loop While Key > 0 ‘вариант2: Loop While Switch

End Sub

Алгоритм вставки: исходные данные в столбце «С» (размер массива 200 значений), результаты сортировки – в столбце «D».

Sub Insertion()

Dim SortArray(200)

i = 1

While Range("C" + LTrim$(Str$(i)))

SortArray(i) = Range("C" + LTrim$(Str$(i)))

i = i + 1

Wend

Limit = i - 1

For Row = 2 To Limit

TempVal = SortArray(Row)

For J = Row To 2 Step -1

If SortArray(J - 1) > TempVal Then

SortArray(J) = SortArray(J - 1)

Else

Exit For

End If

Next J

SortArray(J) = TempVal

For k = 1 To i - 1

Range("D" + LTrim$(Str$(k))) = SortArray(k)

Next k

Next Row

End Sub

Алгоритм обмена: исходные данные в столбце «С» (размер массива 200 значений), результаты сортировки – в столбце «D».

Sub Exchange()

Dim SortArray(200)

i = 1

While Range("C" + LTrim$(Str$(i)))

SortArray(i) = Range("C" + LTrim$(Str$(i)))

i = i + 1

Wend

Limit = i - 1

For Row = 1 To Limit

SmallestRow = Row

For J = Row + 1 To Limit

If SortArray(J) < SortArray(SmallestRow) Then

SmallestRow = J

End If

Next J

If SmallestRow > Row Then

A = SortArray(Row)

SortArray(Row) = SortArray(SmallestRow)

SortArray(SmallestRow) = A

End If

For k = 1 To Limit

Range("D" + LTrim$(Str$(k))) = SortArray(k)

Next k

Next Row

End Sub