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(200As Égitest
    
Private Hány_rekord As Integer
    Dim 
Rajzlap As Graphics  'Ide (a Formra)írunk, rajzolunk
    
Dim 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 + ' 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 As Integer
        
Rajzlap.DrawString("Napközeli bolygók:", F, Brushes.Blue, X_pos, Y_pos)
        Y_pos 
Y_pos + 16 'soremelés
        
For 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 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
        
0
        
For To Hány_rekord
            
If Bolygók(I).Holkering "Neptunusz" Then
                
N + '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

        
0
        
For To Hány_rekord
            
If Bolygók(I).Holkering "Neptunusz" Then
                
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 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 Hány_rekord - To Step -1
            
For To Q
                
If Bolygók(I).Holkering > Bolygók(I + 1).Holkering Then
                    
CS Bolygók(I + 1)
                    Bolygók(I + 
1Bolygók(I)
                    Bolygók(I) 
CS
                
End If
            Next 
I
        
Next Q
        
Dim író As New IO.StreamWriter("holdak.txt")
        
For 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.ObjectByVal As System.EventArgs) Handles MyBase.Load
    
End Sub

    Private Sub 
Button1_Click(ByVal sender As System.ObjectByVal 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