Роза ветров - VB

Узнай цену своей работы

Формулировка задачи:

Построить на экране розу ветров по заданным натуральным числа к1,…к8, определяющим северное, северо-восточное, восточное, юго-восточное, южное, юго- западное, западное или северо-западное направление. Числа считываются из текстового файла.

Решение задачи: «Роза ветров»

textual
Листинг программы
Private Sub Command1_Click()
Dim k(7, 2) As Integer, i As Integer, nm, x As Integer
Pct.Cls
Pct1.Cls
Pct1.Print "Значения k1 - k8 :" & Chr(13)
Pct.ScaleHeight = 220
Pct.ScaleWidth = 220
Pct.FontSize = 6
Pct.Line (110, 10)-(110, 210), &HFF0000, B
Pct.CurrentX = 109
Pct.CurrentY = 0
Pct.Print "N"
Pct.Line (110, 10)-(107, 14), &H0&
Pct.Line (110, 10)-(113, 14), &H0&
Pct.CurrentY = 211
Pct.Print "S"
Pct.Line (110, 210)-(107, 206), &H0&
Pct.Line (110, 210)-(113, 206), &H0&
 
Pct.Line (10, 110)-(210, 110), &HFF0000, B
Pct.CurrentX = 5
Pct.CurrentY = 108
Pct.Print "W"
Pct.Line (10, 110)-(14, 106), &H0&
Pct.Line (10, 110)-(14, 114), &H0&
Pct.CurrentX = 212
Pct.CurrentY = 108
Pct.Print "O"
Pct.Line (210, 110)-(206, 106), &H0&
Pct.Line (210, 110)-(206, 114), &H0&
 
Pct.Line (10, 210)-(210, 10), &HFF0000
Pct.CurrentX = 3
Pct.CurrentY = 212
Pct.Print "SW"
Pct.Line (10, 210)-(14, 210), &H0&
Pct.Line (10, 210)-(10, 206), &H0&
Pct.CurrentX = 211
Pct.CurrentY = 0
Pct.Print "NO"
Pct.Line (210, 10)-(210, 14), &H0&
Pct.Line (210, 10)-(206, 10), &H0&
 
Pct.Line (10, 10)-(210, 210), &HFF0000
Pct.CurrentX = 3
Pct.CurrentY = 0
Pct.Print "NW"
Pct.Line (10, 10)-(14, 10), &H0&
Pct.Line (10, 10)-(10, 14), &H0&
Pct.CurrentX = 211
Pct.CurrentY = 212
Pct.Print "SO"
Pct.Line (210, 210)-(210, 206), &H0&
Pct.Line (210, 210)-(206, 210), &H0&
 
Randomize
For i = 0 To 7
    k(i, 0) = Int(Rnd * 100)
    If i Mod 2 <> 0 Then x = Sqr((k(i, 0) ^ 2) / 2)
    Select Case i
    Case 0
        nm = "Север - "
        k(i, 1) = 110
        k(i, 2) = 110 - k(i, 0)
    Case 1
        nm = "Северо-восток - "
        k(i, 1) = 110 + x
        k(i, 2) = 110 - x
    Case 2
        nm = "Восток - "
        k(i, 1) = 110 + k(i, 0)
        k(i, 2) = 110
    Case 3
        nm = "Юго-восток - "
        k(i, 1) = 110 + x
        k(i, 2) = 110 + x
    Case 4
        nm = "Юг - "
        k(i, 1) = 110
        k(i, 2) = 110 + k(i, 0)
    Case 5
        nm = "Юго-запад - "
        k(i, 1) = 110 - x
        k(i, 2) = 110 + x
    Case 6
        nm = "Запад - "
        k(i, 1) = 110 - k(i, 0)
        k(i, 2) = 110
     Case 7
        nm = "Северо-запад - "
        k(i, 1) = 110 - x
        k(i, 2) = 110 - x
        Pct.Line (k(7, 1), k(7, 2))-(k(0, 1), k(0, 2)), &H80&
   End Select
   If i <> 0 Then
        Pct.Line (k(i - 1, 1), k(i - 1, 2))-(k(i, 1), k(i, 2)), &H80&
   End If
   Pct.CurrentX = k(i, 1)
   Pct.CurrentY = k(i, 2)
   Pct.Print k(i, 0)
   Pct1.Print nm & k(i, 0)
Next i
End Sub
 
Private Sub Command2_Click()
End
End Sub

Оцени полезность:

8   голосов , оценка 3.625 из 5