'i442 'Zsombó István '12. évfolyam 'Pécsi Leőwey Klára Gimnázium 'Visual Basic .NET - Visual Studio 2015 Module Module1 Dim mappa As String = "D:\Progik\i442" Dim naplo As New List(Of Byte) Sub Main() beolvas() f0() f1() f2() f3() f4() f5() f6() f7() f8() Console.ReadLine() End Sub Sub beolvas() naplo.Add(0) Using f As System.IO.StreamReader = System.IO.File.OpenText("naplo.txt") Do While f.Peek() > 0 Select Case f.ReadLine Case "0" : naplo.Add(0) Case "1" : naplo.Add(1) End Select Loop End Using naplo.Add(0) End Sub Dim felle As New List(Of Integer()) Sub f0() Dim felszall As Integer For i = 0 To naplo.Count - 1 - 1 If naplo(i) = 0 And naplo(i + 1) = 1 Then felszall = i + 1 If naplo(i) = 1 And naplo(i + 1) = 0 Then felle.Add({felszall, i + 1, i + 1 - felszall}) Next End Sub Sub f1() Console.WriteLine(felle.Count) End Sub Sub f2() Console.WriteLine(Math.Ceiling((naplo.Count - 2) / 60)) End Sub Sub f3() Dim osszesen As Integer = 0 For Each i As Integer() In felle osszesen += i(2) Next Console.WriteLine(osszesen) Console.WriteLine(Math.Round((osszesen / felle.Count), 2)) End Sub Sub f4() Dim tevesek As Integer = 0 For Each i As Integer() In felle If i(2) <= 3 Then tevesek += 1 Next Console.WriteLine(tevesek) End Sub Sub f5() Dim leghosszabb As Integer = 0 Dim kimenet As String = "" For i = 0 To felle.Count - 1 Select Case felle(i)(2) Case Is > leghosszabb leghosszabb = felle(i)(2) kimenet = felle(i)(2) & " " & felle(i)(0) Case leghosszabb kimenet &= " " & felle(i)(0) End Select Next Console.WriteLine(kimenet) End Sub Sub f6() Dim sikerek As New List(Of Integer()) For i = 0 To felle.Count - 1 - 1 Dim pihenoido As Integer = felle(i + 1)(0) - felle(i)(1) If pihenoido > felle(i)(2) And pihenoido > felle(i + 1)(2) Then sikerek.Add({felle(i)(1), pihenoido}) Next Dim legrovidebbsiker As Integer = 0 For i = 0 To sikerek.Count - 1 If sikerek(i)(1) < sikerek(legrovidebbsiker)(1) Then legrovidebbsiker = i Next Console.WriteLine(sikerek(legrovidebbsiker)(0)) End Sub Sub f7() Dim josorozat As New List(Of Integer()) Dim jelenlegijosorozathossza As Integer = 1 Dim jelenlegijosorozatkezdete As Integer = 1 For i = 0 To felle.Count - 1 - 1 If felle(i + 1)(2) > felle(i)(2) Then jelenlegijosorozathossza += 1 Else josorozat.Add({jelenlegijosorozatkezdete, jelenlegijosorozathossza}) jelenlegijosorozathossza = 1 jelenlegijosorozatkezdete = felle(i + 1)(0) End If Next josorozat.Add({jelenlegijosorozatkezdete, jelenlegijosorozathossza}) Dim leghosszabbjosorozat As Integer = 0 For i = 0 To josorozat.Count - 1 If josorozat(i)(1) > josorozat(leghosszabbjosorozat)(1) Then leghosszabbjosorozat = i Next Console.WriteLine(josorozat(leghosszabbjosorozat)(0) & " " & josorozat(leghosszabbjosorozat)(1)) End Sub Sub f8() Dim f As System.IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter("sorrend.txt", True) Do While felle.Count > 0 Dim legrovidebbido As Integer = felle(0)(2) For Each rep As Integer() In felle If rep(2) < legrovidebbido Then legrovidebbido = rep(2) Next f.Write(legrovidebbido) Dim i As Integer = 0 Do While i < felle.Count If felle(i)(2) = legrovidebbido Then f.Write(String.Format((" {0} - {1}"), atvalt(felle(i)(0)), atvalt(felle(i)(1) - 1))) felle.RemoveAt(i) Else i += 1 End If Loop f.WriteLine("") Loop f.Close() End Sub Function atvalt(mp As Integer) As String Dim ora, perc, masodperc As Integer ora = mp \ 3600 perc = (mp - ora * 3600) \ 60 masodperc = mp - ora * 3600 - perc * 60 Return String.Format("{0}:{1}:{2}", ora, perc, masodperc) End Function End Module