Страница: 1 |
Вопрос: Помогите - сортировка методом пузырька VBasi | Добавлено: 20.12.08 23:35 |
Автор вопроса: ![]() |
Вот мне надо сделать, сортировку методом пузырька в Delphi или Visual Basic. И чтоб данные брались из файла, и записывались в другой файл.
Исходник 001:
002: 003: 004: 005: 006: 007: 008: 009: 010: 011: 012: 013: 014: 015: 016: 017: 018: 019: 020: 021: 022: 023: 024: 025: 026: 027: 028: 029: 030: 031: 032: 033: 034: 035: 036: 037: 038: 039: 040: 041: 042: 043: 044: 045: 046: 047: 048: 049: 050: 051: 052: 053: 054: 055: 056: 057: 058: 059: 060: 061: 062: 063: 064: 065: 066: 067: 068: 'На форме одна кнопка. Подключаем в референсах библиотеку Microsoft Scripting Runtime 'Допустим что входной файл престаляет собой строку вида 3,22,66,44,88,,23,97,345,321 Private Sub Command1_Click() Dim MyArrStr() As String Dim MyArr() As Long Dim sStr As String Dim i As Long 'Читаем из файла sStr = MyRead("in.txt") 'Получаем массив строк MyArrStr = Split(sStr, ",") i = 0 ReDim MyArr(i) 'Преобразуем в массив Long For i = LBound(MyArrStr) To UBound(MyArrStr) ReDim Preserve MyArr(i) MyArr(i) = CLng(MyArrStr(i)) Next i 'Сортируем Call Sort(MyArr) 'Собираем строку (чтоб вид бил как у входного файла) sStr = "" For i = LBound(MyArr) To UBound(MyArr) MyArrStr(i) = CStr(MyArr(i)) sStr = sStr & MyArrStr(i) If i <> UBound(MyArr) Then sStr = sStr & "," Next i 'Записываем файл Call MyWrite(sStr, "out.txt") End Sub Private Sub Sort(Mus() As Long) Dim n As Long, i As Long, j As Long, tmp As Long i = 0 'немного подправил, чтоб начинало с 0 Do While i < UBound(Mus) If Mus(i) > Mus(i + 1) Then tmp = Mus(i) Mus(i) = Mus(i + 1) Mus(i + 1) = tmp If i > 1 Then i = i - 1 Else i = i + 1 End If Else i = i + 1 End If Loop End Sub 'Процедура записи, используется FSO Private Sub MyWrite(MyStr As String, outFile As String) Dim fsoSave As New FileSystemObject Dim filSave As TextStream Set filSave = fsoSave.CreateTextFile(App.Path & "\" & outFile, True) filSave.WriteLine (MyStr) filSave.Close End Sub 'Процедура чтения, используется FSO Private Function MyRead(inFile As String) As String Dim fsoSave As New FileSystemObject Dim filSave As TextStream Set filSave = fsoSave.OpenTextFile(App.Path & "\" & inFile) MyRead = filSave.ReadLine filSave.Close End Function только он у меня не запускается, как образом не пойму И еще незнаю как сделать загрузить исходные данные из файла в окно (text или label)в программе чтоб значения показывались сначала в окне, потом нажимаешь на кнопку полученные данные переходят в другое окно, а потом нажав кнопку сохранить все в файл? |
Ответы | Всего ответов: 10 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 21.12.08 00:27 |
мне кажется или тут пузырек в один цикл пытаются реализовать? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 79 |
Профиль | Цитата | #2 | Добавлено: 21.12.08 00:35 |
Хм, обработал я твой код. Я повыкидывал и Scripting Runtime и FSO - если надо сделаешь сам
Вот этот код стабилен:
|
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 79 |
Профиль | Цитата | #3 | Добавлено: 21.12.08 00:38 |
Ой кажется FSO это часть Scripting Runtime... ну вихор с им... |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 4 |
Профиль | Цитата | #4 | Добавлено: 21.12.08 14:30 |
Понятно спасибо, но с FSO я проверил тоже работает, подключил Microsoft Scripting Runtime и все пашет.
Только вот терь надо чтоб выводилось в Textbox значение из in.txt а во второй textbox уже значения после сортировки. Как это сделать? И можно ли еще сделать кнопку чтобы можно было вписать имя файла, и чтоб сохранились значения пузырька? |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 22.12.08 02:54 |
Разве в текстбоксы не выводятся in.txt и значения после сортировки?
sStr = MyRead("in.txt" ![]() Text1 = sStr 'отображаем в текстбокс ... Text2 = sStr 'отображаем в текстбокс И можно ли еще сделать кнопку чтобы можно было вписать имя файла, и чтоб сохранились значения пузырька? можно.делай.
или вопросы какие-то? |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 4 |
Профиль | Цитата | #6 | Добавлено: 22.12.08 22:30 |
Наверно я не правильно выразился, надо чтобы на форме была кнопка при нажатии которой в Textbox загрузились числа из файла, и чтоб они были видны в программе, при нажатии другой кнопки массив сортируется, и в самой программе должно показаться массив уже обработанный. После чего нажимаем кнопку сохранить, значение сохраняется в файл. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 23.12.08 01:18 |
Хорошо. Ок. Давай так: сейчас как оно работает? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 79 |
Профиль | Цитата | #8 | Добавлено: 23.12.08 02:27 |
Не скажет он тебе этого никогда-никогда, потому что настоящие мальчиши умеют хранить тайну своей Родины. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 4 |
Профиль | Цитата | #9 | Добавлено: 23.12.08 09:46 |
Сейчас работает оно посредством одной кнопки, т.е. в папке с программой есть два файла in.txt и out.txt. В программе нажимаем кнопку, берется значения файла, и отправляет сразу отсортированный в out.txt |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 4 |
Профиль | Цитата | #10 | Добавлено: 23.12.08 09:49 |
Йопт, извиняюсь все выводит, сильно ступил |
Страница: 1 |
|