Роза ветров - 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