В общем, суть в чём,
1) есть прямая с числами: от 1 до 15.
1__2__3__4__5__6__7__8__9__10__11__12__13__14__15
2) рандомно получаются два числа, к примеру 2 и 5.
3) надо нарисовать линию от 2 до 5, т.к. отрезок от 5 до 2 гораздо длиннее.
второй пример:
2) получили рандомно два числа, 14 и 3
3) если мы проведём отрезок от 3 до 14 то это займёт 12 чисел, а надо искать минимальное количество чисел на отрезке. значит надо идти в обратную сторону, от 14 до 3. И тогда, вначале рисуем прямую от 14 до 15, а затем, от 1 до 3.
Бывает так что уже голова кипит от алгоритма, не получается написать логику для нахождения направления.
Нужно найти в какую сторону надо отрисовывать минимальный отрезок.
И просто рисовать по форме, через PSet.
Получится, нечто вроде:
____ _____
______
____
____________
_______ ___
Вот мой код, правда тестировал на VBA по экселю:
- Код: Выделить всё
Private Sub sectorp()
Dim number As Integer
Dim i As Integer
Dim y As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim previ As Integer
previ = -1
y = 26
For i = 0 To 10
number = Int(15 * Rnd()+1)
If previ = -1 Then
previ = number
Else
If previ >= number Then
l = previ
Else
l = number
End If
If number - previ <= 7 And number - previ > -1 Then
For j = previ To l
Cells(y, j) = ChrW(9679)
Next
ElseIf number - previ < 0 And number - previ > -7 Then
For j = number To l
Cells(y, j) = ChrW(9679)
Next
Else
For j = previ To 15
Cells(y, j) = ChrW(9679)
Next
For j = 1 To number
Cells(y, j) = ChrW(9679)
Next
End If
previ = number
End If
y = y + 1
Next
End Sub
Глючит, не работает. Одни диапазоны правильно определяет, другие - нет. Запутался уже совсем.