Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР-4-10 «Обработка строковых данных» «Обработка текстовых данных»

.docx
Скачиваний:
23
Добавлен:
03.05.2015
Размер:
60.96 Кб
Скачать

Лабораторные работы по темам

4.9 – «Обработка строковых данных»

4.10 – «Обработка текстовых файлов»

Цель лабораторной работы состоит в изучении средств VB и средств VS для работы с текстовыми файлами.

  1. Задание на разработку проекта и вариант задания:

1)

В текстовом файле найти строку, содержащую наибольшее количество цифр, идущих подряд.

  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

  1. Выполнение приложения и получение результатов

Тема 4.10. ЛР «Текстовые файлы» Страница 114