4511
.pdf31
1
начало
2 Ввод
a,b,c
3нет
|
a>b |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
a>с |
|
4 |
|
|
|
|
|
|
нет |
b>c |
|
5 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
да6 |
|
|
|
|
|
|
|
|
|
|
да |
|
|
||
|
|
|
|
|
7 |
|
|
|
|
|
8 |
|
||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
max=a |
|
|
|
|
max=c |
|
|
max=b |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9
Вывод
a,b,c,max
10
конец
Рис. 9. Схема алгоритма нахождения максимального из 3 величин
Для тестирования алгоритма нахождения максимального из 3 величин составляется табл. 8.
Таблица 8
Тестирование алгоритма
Шаг |
Проверка условий |
a |
b |
c |
max |
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
1 |
|
-5 |
3 |
1 |
|
|
|
|
|
|
|
2 |
Проверка условия a>b? |
|
|
|
|
«нет» -5>3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
Проверка условия b>c? |
|
|
|
=b=3 |
«да» 3>1 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32
|
|
|
|
|
Окончание табл. 8 |
|
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
|
|
1 |
|
0 |
1 |
4 |
|
|
|
|
|
|
|
|
|
2 |
Проверка условия a>b? |
|
|
|
|
|
«нет» 0>1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
Проверка условия b>c? |
|
|
|
=c=4 |
|
«нет» 1>4 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
7 |
-6 |
2 |
|
|
|
|
|
|
|
|
|
2 |
Проверка условия a>b? |
|
|
|
|
|
«да» 7>-6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
Проверка условия a>c? |
|
|
|
=a=7 |
|
«да» 7>2 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Написание и отладка программы
Располагаем на форме объекты, как показано на рис. 10, используя панель инструментов.
Рис. 10. Эскиз формы Устанавливаем значения свойств объектов в соответствии с табл. 9. Ана-
лизируем исходные, промежуточные, выходные данные, заполнив табл. 10. Таблица 9
Объекты управления
Элемент управления |
Свойство |
Значение |
Примечание |
|
|
|
|
Form1 |
Name |
Form1 |
|
|
|
|
|
|
Расчёт max из 3 чисел a,b,c |
|
|
|
Caption |
|
|
|
|
|
|
Command1 |
Name |
Command1 |
|
|
|
|
|
Caption |
Вывести |
|
|
|
|
||
|
|
|
|
Command2 |
Name |
Command2 |
|
|
|
|
|
Caption |
Выход |
|
|
|
|
||
|
|
|
|
33
|
|
|
|
Таблица 10 |
|
|
Анализ исходных, промежуточных, выходных данных |
||||
|
|
|
|
|
|
Обозначения данных |
Тип данных |
Значения |
Примечание |
||
|
|
||||
в формуле |
в программе |
||||
|
|
|
|||
|
|
|
|
|
|
a |
a |
Integer |
вводится |
|
|
b |
b |
Integer |
вводится |
|
|
c |
c |
Integer |
вводится |
|
|
max |
max |
integer |
вычисляется |
|
|
|
|
|
|
|
Анализ результатов
Результаты выполнения программы
№ |
Входные данные |
Результат |
|
|
|
|
|
1 |
a=-5,b=3,c=1 |
Из 3 чисел a=-5,b=3,c=1 |
|
максимальное=3 |
|||
|
|
||
|
|
|
|
2 |
a=0,b=1,c=4 |
Из 3 чисел a=0,b=1,c=4 |
|
максимальное=4 |
|||
|
|
||
|
|
|
|
3 |
a=7,b=-6,c=2 |
Из 3 чисел a=7,b=-6,c=2 |
|
максимальное=7 |
|||
|
|
||
|
|
|
Сопровождение программы
Фрагмент программы нахождения максимального из 3 чисел на Visual
Basic 6.0 с комментариями:
‘Процедура обработки события Click для кнопки управления Вычислить
Private Sub Command1_Click()
‘Объявление переменных a,b,c,max типа integer Dim a as integer, b as integer, c as integer Dim max as integer
‘Ввод значений переменных a,b,c a=Val(InputBox(“Введите целое число а”)) b=Val(InputBox(“Введите целое число b”)) c=Val(InputBox(“Введите целое число c”))
‘Сравнение чисел if a>b then
if a>c then max=a else max=c elseif b>c then
max=b
34
else max=c
end if
‘Вывод на форму максимального из 3 чисел
msgbox “Из 3 чисел a=”+cstr(a)+”,b=”+cstr(b)+_
”,c=”+cstr(c)+chr(10)+”максимальное=”+cstr(max)
End Sub
Задание № 1
0.Дано слово. Удалить из него все повторяющиеся буквы, оставив их первые вхождения: в слове должны остаться только различные буквы.
1.Числа, которые можно одинаково прочитать слева направо и справа налево, называются палиндромами (21312, 52325, 4224). Проверить, является ли заданное число палиндромом.
2.В заданном интервале найти все натуральные числа, равные кубу суммы своих цифр.
3.Натуральное число называется совершенным, если оно равно сумме своих простых делителей, например 6=1+2+3. Найти все совершенные числа в заданном интервале.
4.Известно, что разность любого натурального числа и суммы его цифр кратна 9. Проверить этот факт для чисел в заданном интервале.
5.Число делится на 11, если разность между суммой цифр, стоящих на нечётных местах, кратна 11. Проверить этот признак для всех натуральных чисел, значение которых не превосходит заданного m, и показать числа, кратные 11.
6.Определить, сколько различных букв содержится в слове.
7.Найти два наименьших числа, которые начинаются на 5 и из которых, перенеся первую цифру в конец, можно получить новое число, в 5 раз меньшее, чем искомое.
8.Проверить, можно ли заданное натуральное число представить в виде: а) произведения двух простых чисел; б) произведения трёх простых чисел; в) квадрата какого-либо простого числа; г) куба какого-либо простого числа.
9.Даны целые числа p, q, a1, ..., a55 (0≤q<p). В исходной последовательности a1, ..., a55 заменить нулями элементы последовательности, модуль которых при делении на p даёт в остатке q.
35
Задание № 2
0.Даны действительные числа a1, ... , an, p, натуральное число k (a1 ≤ a2
≤.. ≤ an, k ≤ n). Удалить из a1, ... , an элемент с номером k (то есть ak) и вставить элемент, равный p, так, чтобы не нарушалась последовательность.
1.Перенести в начало массива S(k) все отрицательные элементы по возрастанию, далее нулевые и затем положительные также по возрастанию.
2.Элементы массива M(k) случайны перемешаны. В массиве N(k) хранятся номера массива M(k) до перемешивания. Восстановить исходное состояние массива M(k).
3.Дана матрица натуральных чисел Y(n,m), в которой столбцы упорядочены по убыванию. Вычислить сумму элементов каждого столбца и из полученных сумм получить новый массив S(k), который упорядочить по убыванию.
4.Дана матрица натуральных чисел Y(n,m), в которой строки упорядочены по возрастанию. Вычислить сумму элементов каждой строки и из полученных сумм получить новый массив S(k), который упорядочить по возрастанию.
5.Дана матрица натуральных чисел Y(n,m), в которой столбцы упорядочены по убыванию. Переместить содержимое матрицы в массив S(k) по столбцам и упорядочить по убыванию, удалив одинаковые элементы. Определить новое количество элементов.
6.В матрице X(m,n), где m=n, переставить строки и столбцы так, чтобы элементы главной диагонали образовывали убывающую последовательность.
7.Даны два упорядоченных по возрастанию массива−A(n), B(m). Получить слиянием новый массив C(n+m), в котором упорядочить элементы по убыванию.
8.Дана матрица T(m), элементы которой − строковые переменные. Упорядочить строки матрицы по возрастанию.
9.Даны пять попарно различных целых чисел: a,b,c,d,e. Упорядочить их по возрастанию, используя для этого не более 7 сравнений.
Примеры алгоритмов и программ к заданию № 2.
Расположить элементы последовательности A1, A2, ..., AN в порядке убывания. Найти в массиве элемент с наибольшим значением и поменять его
36
местами с первым элементом. Далее те же действия выполнить с остальными N-1 элементами массива, затем N-2 элементами и т.д., пока не останется один элемент − последний, наименьший.
Сортировка данных−это обработка информации, в результате которой элементы её (записи) располагаются в определённой последовательности в зависимости от значения некоторых признаков элементов этой информации.
К методам сортировки относятся простой выбор, простой обмен, простые вставки, метод Шелла.
Вметоде простого выбора выделяется наименьший (или наибольший) элемент массива и отделяется от остальных. Далее опять выделяется наименьший (или наибольший) из оставшихся и т.д.
Схема алгоритма метода простого выбора представлена на рис. 11, а.
Вметоде простого обмена если два элемента расположены не по порядку, то они меняются местами. Этот процесс повторяется до тех пор, пока элементы не будут упорядочены (рис. 11, б).
Вметоде Шелла рассматриваются отдалённые, а затем близкорасположенные записи. Каждый проход в этом случае характеризуется некоторым
смещением h для сортируемых записей − интервал, который разделяет сравниваемые записи.
В методе простых вставок элементы просматриваются по одному. Каждый новый элемент вставляется в подходящее место среди ранее упорядоченных элементов. Схема алгоритма сортировки простыми вставками представлена на рис. 12.
Сортировки простым выбором и простым обменом относятся к сортировкам с убывающим шагом. Сортировка простыми вставками работает со списком неупорядоченных целых чисел и сортирует их в порядке возрастания.
Отсортированный список вначале пуст. На каждом шаге первое число из не отсортированного списка удаляется и помещается в отсортированный список на соответствующее место. Для этой цели отсортированный список должен каждый раз быть просмотрен, начиная с наименьшего числа и до тех пор, пока нужное место не будет найдено. При этом все реорганизации списка происходят в одном списке. Алгоритм заканчивает свою работу, когда элемент, стоящий до сих пор на последнем месте, будет вставлен на соответствующее место в отсортированном списке.
начало |
Ввод |
n, An |
i =1(1)n |
k = i, x = Ai |
j = i +1(1)n |
нет |
Aj > x |
да |
x = Aj ,k = j |
Ak = Ai; |
Ai = x |
A(n) |
конец |
а) |
37
|
начало |
|
|
Ввод |
|
|
N, AN |
|
|
i = 2,N |
|
|
j = N |
|
|
A j −1 > A j |
да |
|
|
|
|
нет |
x = A j −1 |
|
A j −1 = A j ; A j = x |
|
|
|
|
|
j = j −1 |
|
да |
j ≤ i |
|
|
|
|
|
нет |
|
|
AN |
|
|
конец |
|
|
б) |
|
Рис. 11. Схема алгоритма: а) простой выбор, б) простой обмен
нет
j = i
Ak = x
нет
j > k
да
A j = A j−1 j = j − 1
38 |
|
начало |
|
Ввод |
|
N, AN |
|
i = 2,N |
|
x = Ai ;k = 1 |
|
j = i − 1 |
|
j>0 |
|
да |
|
Ai > |
да |
A j |
|
|
x = A j −1 |
нет |
A j −1 = A j ; A j = x |
j = j −1 |
|
Вывод AN |
конец
Рис. 12. Сортировка простыми вставками
Фрагмент программы для организации сортировки простым выбором:
For i = 1 to n
k = i : x = a(i)
For j = i + 1 to n
39
If a(j) > x then x = a(j)
k = j end if
next j
a(k) = a(i): a(i) = x Next i
For i = 1 to n
Print “ ”; a(i);
Next i
Фрагмент программы для организации сортировки простым обменом:
For i = 2 to n j = N
Do
If a(j - 1) < a(j) then x = a(j - 1) a(j-1) = a(j)
a(j) = x End If
j = j - 1
Loop While j >= 1
Next i
For i = 1 To N
List2.AddItem (Str(Round(A(i),2))) next i
Фрагмент программы для организации сортировки простыми вставками:
For i = 2 to n k = 1
x = a(i): j = i-1 Do While j > 0
If a(i) > a(j) then k = j + 1: j = 0
End If
j = j - 1
Loop
j = i
Do While j > k
a(j) = a(j-1): j=j-1
40
Loop
a(k) = x
Next i
For i = 1 to n
Print “ ” ; a(i);
Next i
Фрагмент программы для сортировки методом Шелла:
Print “ Исходный массив”
For i = 1 To N
Print “ ”;a(i);
Next i
H = N\2
Do
Do
hs = 0
For i = 1 to N-h
If a(i)>a(i+h) Then
x = a(i): a(i)= a(i+h) a(i+h) = x: hs = 1
End If
Next i
Loop While (hs = 1)
Print “приращение h=”;h; “ ”;
For i = 1 To N
Print “ “;a(i);
Next i
Print h = h\2
Loop While h>0
Print “Результат сортировки”
For i = 1 To N
Print “ “;a(i);
Next i
Задание № 3
Ниже приводится перечень вопросов для выполнения студентами учебно-
исследовательской работы: