Public Class Form1
Private Structure Égitest
Dim Holkering As String
Dim Név As String
Dim Távolság As Long
Dim Átméro As Long
Dim Felfedezve As Integer
End Structure
Private Bolygók(200) As Égitest
Private Hány_rekord As Integer
Dim Rajzlap As Graphics 'Ide (a Formra)írunk, rajzolunk
Dim F As New Font("ArielCe", 14, FontStyle.Regular, GraphicsUnit.World) 'betűtípus, méret, stílus, mértékegység
Dim Y_pos, X_pos As Integer 'A kinyomtatott sorok pozíciója
Private Sub beolvas()
Dim Egy_sor As String
Dim SpSor() As String 'dinamikus tömb! Nincs megadva az elemszám, mert nem tudjuk előre Hány_rekord rekord lesz.
Hány_rekord = 0
Dim Olvasó As New IO.StreamReader("bolygok.txt")
Do While Not Olvasó.EndOfStream
Hány_rekord = Hány_rekord + 1 ' Hány_rekord (sor) van a fájlban
Egy_sor = Olvasó.ReadLine 'egy egész sor beolvasása
SpSor = Split(Egy_sor, vbTab) 'Szétszedi a sort a tabulátorok mentén
Bolygók(Hány_rekord).Holkering = SpSor(0)
Bolygók(Hány_rekord).Név = SpSor(1)
Bolygók(Hány_rekord).Távolság = CLng(SpSor(2)) 'típuskonverzió
Bolygók(Hány_rekord).Átméro = CLng(SpSor(3))
Bolygók(Hány_rekord).Felfedezve = CInt(SpSor(4))
Loop
Olvasó.Close()
End Sub
Private Sub kozeli()
Dim I As Integer
Rajzlap.DrawString("Napközeli bolygók:", F, Brushes.Blue, X_pos, Y_pos)
Y_pos = Y_pos + 16 'soremelés
For I = 1 To Hány_rekord
If Bolygók(I).Holkering = "Nap" And Bolygók(I).Távolság < 155000 Then
Rajzlap.DrawString(vbTab & Bolygók(I).Név, F, Brushes.Blue, X_pos, Y_pos)
Y_pos = Y_pos + 16
End If
Next I
End Sub
Private Sub legujabb()
Dim Max, Mikor, I As Integer
Dim neve As String = ""
Max = Bolygók(1).Felfedezve
For I = 1 To Hány_rekord
If Bolygók(I).Felfedezve > Max Then
Max = Bolygók(I).Felfedezve
Mikor = Bolygók(I).Felfedezve
neve = Bolygók(I).Név
End If
Next I
Dim Sor As String = ""
Sor = "A legújabban felfedezett égitest neve:" & neve & Chr(10) & "Felfedezésének időpontja:" & Str(Mikor)
Rajzlap.DrawString(Sor, F, Brushes.Blue, X_pos, Y_pos)
Y_pos = Y_pos + 32 'Két sort emelünk mert a Chr(10) is megfelel egy soremelésnek
End Sub
Private Sub Neptun()
Dim N, I As Integer
Dim dtomb() As String ' dinamikus tömb
N = 0
For I = 1 To Hány_rekord
If Bolygók(I).Holkering = "Neptunusz" Then
N = N + 1 'Megszámoljuk Hány_rekord van
End If
Next I
ReDim dtomb(N) 'A tömb határait beállítjuk a szükséges méretűre
N = 0
For I = 1 To Hány_rekord
If Bolygók(I).Holkering = "Neptunusz" Then
N = N + 1
dtomb(N) = Bolygók(I).Név
End If
Next I
Rajzlap.DrawString(" A Neptunusz bolygói:", F, Brushes.Blue, X_pos, Y_pos)
Y_pos = Y_pos + 16
For I = 1 To N
Rajzlap.DrawString(vbTab & dtomb(I), F, Brushes.Blue, X_pos, Y_pos)
Y_pos = Y_pos + 16
Next I
End Sub
Private Sub holdak()
Dim CS As Égitest
Dim Q, I
For Q = Hány_rekord - 1 To 1 Step -1
For I = 1 To Q
If Bolygók(I).Holkering > Bolygók(I + 1).Holkering Then
CS = Bolygók(I + 1)
Bolygók(I + 1) = Bolygók(I)
Bolygók(I) = CS
End If
Next I
Next Q
Dim író As New IO.StreamWriter("holdak.txt")
For I = 1 To Hány_rekord
If Bolygók(I).Holkering <> "Nap" Then
író.WriteLine(Bolygók(I).Holkering & vbTab & Bolygók(I).Név)
End If
Next I
író.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Rajzlap = Me.CreateGraphics
Rajzlap.Clear(Color.LightYellow)
X_pos = 20
Y_pos = 50
Call beolvas()
Call legujabb()
Call kozeli()
Call Neptun()
Call holdak()
End Sub
End Class
Colorized by: CarlosAg.CodeColorizer