Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сортировака числового масива ..doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
173.06 Кб
Скачать

Практическая работа

Тема: Сортировка строкового массива  

Цель: Разработать проект, который позволяет сортировать строковый массив по алфавиту.   

 Теория:          

Заполнение строкового массива. Как строковые, так и числовые массивы можно заполнять разными методами. Рассмотренный ранее числовой массив был заполнен непосредственно в самой программе, можно заполнять массивы, вводя данные с клавиатуры с использованием функции InputBox, однако строковые массивы чаще всего заполняются путем считывания данных из текстовых файлов.

            Такие текстовые файлы должны содержать только коды самих символов и, следовательно, должны создаваться в простейших текстовых редакторах (типа Блокнот). 

            В таких файлах элементы данных (последовательности символов) отделяются друг от друга с помощью разделителей (чаще всего запятой).

                     Прежде чем приступить к считыванию данных из текстового файла в строковый массив необходимо открыть файл с помощью оператора Open:

Open Имя_файла For Режим_работы As # Номер_файла

Имя_файла  должно содержать путь к файлу и собственно имя файла, 

Режим_работы  определяет, что файл открыт для считывания данных (Input) или, наоборот, для записи данных в файл (Output), а Номер_файла содержит целое число в интервале от 1 до 511.

            Например, чтобы открыть  для считывания данных файл alphabet.txt находящийся на CD-ROM (логическое имя которого E:),необходимо ввести следующий код:

Open "E:\practicum\VB\projects\project4\alphabet.txt" For Input As #1

            Для чтения данных из файла используется функция Input:

Input # Номер_файла, Список_переменных

            После завершения считывания данных файл необходимо закрыть с помощью оператора Close:

Close # Номер_файла

            Для визуализации заполнения строкового массива терминами удобно использовать управляющий элемент Окно списка (ListBox), который представляет собой упорядоченный список значений.

            Для размещения в окне списка нового элемента используется метод AddItem, который имеет в качестве аргумента строковую переменную, значение которой и добавляется в список.

            Сортировка массива.  В исходном строковом массиве strB термины хранятся в неупорядоченном виде. Сравним последовательно во внутреннем цикле со счетчиком bytI букву «а» алфавита с первыми символами терминов, в случае их совпадения присвоим первому элементу результирующего символьного массива  strC это значение. Повторим эту процедуру последовательно для всех букв алфавита с использованием внешнего цикла со счетчиком bytK. Получим упорядоченный строковый массив strC.

            Визуализация отсортированного массива. Для визуализации отсортированного массива используем второе окно списка.

Ход работы

Запустил Блокнот, ввёл буквы русского алфавита и сохранил файл под именем alphabet.txt.

Создать файл, ввести компьютерные термины и сохранить под именем term.txt.

Создал проект, на форму поместить кнопку cmdAlph (задать свойству Caption значение Считать алфавит) и текстовое полеtxtAlph, в котором можно наблюдать результат заполнения массива.

Создал событийную процедуру считывания данных из файла alphabet.txt в строковый массив strA.Объявил переменные, используемые во всех процедурах:

Dim bytI, bytK As Byte, strA(1 To 33), strB(1 To 10), strC(1 To 10) As String

Private Sub cmdAlph_Click()

Open"E:\practicum\VB\projects\project4\alphabet.txt" For Input As #1

For bytI = 1 To 33

Input #1, strA(bytI)

txtAlph.Text = txtAlph.Text + strA(bytI)

Next bytI

Close #1

End Sub

Поместил на форму кнопку cmdTerm (задать свойству Caption значение Считать термины) и окно списка lstTerm, в котором можно наблюдать результат заполнения массива.

Создал событийную процедуру считывания данных из файла term.txt в строковый массив strB и его отображения в окне спискаlstTerm:

 

Private Sub cmdTerm_Click()

Open "E:\practicum\VB\projects\project4\term.txt" For Input As #2

bytI = 1

Do Until EOF(2)

Input #2, strB(bytI)

lstTerm.AddItem strB(bytI)

bytI = bytI + 1

Loop

Close #2

End Sub

Поместил на форму кнопку cmdSort (задал свойству Caption значение Сортировать) и создал событийную процедуру сортировки массива:

 

Private Sub cmdSort_Click()

bytJ = 1

For bytK = 1 To 33

For bytI = 1 To 10

If strA(bytK) = Left$(strB(bytI), 1) Then strC(bytJ) = strB(bytI): bytJ = bytJ + 1

Next bytI

Next bytK

End Sub

Поместил на форму кнопку cmdRez (задад свойству Caption значение Показать), окно списка lstSort и создал событийную процедуру визуализации отсортированного массива:

 

Private Sub cmdRez_Click()

For bytJ = 1 To 10

lstSort.AddItem strC(bytJ)

Next bytJ

End Sub

Запустил проект на выполнение. Последовательно щелкнул по кнопкам Считать алфавитСчитать терминыСортировать,Показать:

Сохранил проект.