ЛР-4-10 «Обработка строковых данных» «Обработка текстовых данных»
.docx
Лабораторные работы по темам
4.9 – «Обработка строковых данных»
4.10 – «Обработка текстовых файлов»
Цель лабораторной работы состоит в изучении средств VB и средств VS для работы с текстовыми файлами.
-
Задание на разработку проекта и вариант задания:
1) |
В текстовом файле найти строку, содержащую наибольшее количество цифр, идущих подряд. |
-
Написание программного кода с использованием процедур.
Option Strict On Option Explicit On Imports System.IO
Public Class Form1 'Функция ввода исходных данных из TextBox Function vvod(ByVal T As TextBox) As String Return T.Text End Function
'Процедура вывода результата в TextBox Sub vivod(ByVal z As Integer, ByRef t As TextBox) t.Text = CStr(z) End Sub
'Процедура вывода массива строчного Public Sub PrintL(ByRef x() As String, ByRef LB As ListBox) Dim i As Integer For i = 0 To UBound(x) LB.Items.Add(x(i) + vbNewLine) Next i End Sub
'Процедура вывода массива числового Public Sub PrintLI(ByRef x() As Integer, ByRef LB As ListBox) Dim i As Integer For i = 0 To UBound(x) LB.Items.Add(CStr(x(i)) + vbNewLine) Next i End Sub
'Функция нахождения максимального кол-ва цифр подряд Function kolvo(ByVal str As String) As Integer Dim i, count, maxcount As Integer For i = 0 To str.Length - 1 If Char.IsDigit(CChar(str.Substring(i, 1))) Then count += 1 Else If maxcount < count Then maxcount = count count = 0 End If Next Return maxcount End Function
'Процедура построчного чтения данных из текстового файла, 'подсчета числа строк Public Sub readfile(ByVal filename As String, _ ByRef maxCount As Integer, ByRef mass1() As String, ByRef mass2() As Integer) 'создание потока для чтения из текстового файл Dim k As Integer k = UBound(mass2) Dim Rf As New StreamReader(filename) Dim line As String Do While Not Rf.EndOfStream() 'пока не достигнут конец потока line = Rf.ReadLine() 'чтение строки из файла в line mass1(k) = line maxCount = kolvo(line) mass2(k) = maxCount k = k + 1 ReDim Preserve mass2(k) ReDim Preserve mass1(k) Loop Rf.Close() 'закрытие потока ReDim Preserve mass2(UBound(mass2) - 1) ReDim Preserve mass1(UBound(mass1) - 1) End Sub
'Процедура вывода наибольшего кол-ва цифр, идущих подряд Sub Vivodchisla(ByVal mass1() As String, ByVal mass2() As Integer) Dim j, k, l As Integer k = 0 l = 0 For j = 0 To UBound(mass2) If k < mass2(j) Then k = mass2(j) l = j + 1 End If Next vivod(k, TextBox2) vivod(l, TextBox3) PrintL(mass1, ListBox1) PrintLI(mass2, ListBox2) End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim mass1(0), filename As String, maxCount, mass2(0) As Integer filename = vvod(TextBox1) readfile(filename, maxCount, mass1, mass2) Vivodchisla(mass1, mass2) End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click End End Sub End Class
|
Рис. 4.10-2
-
Выполнение приложения и получение результатов
Тема
4.10. ЛР «Текстовые файлы» Страница