Помогить решить задачу с файлом

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
dv_art
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 19.02.2006 (Вс) 13:21

Помогить решить задачу с файлом

Сообщение dv_art » 19.02.2006 (Вс) 13:35

Задача такая:

Дан текстовый файл, состоящий из нескольких строк. В каждой строке буквы и цифры. Требуется видоизменить каждую строчку с последующей записью в новый файл следующим образом: встретившиеся нечетные цифры удвоить в кол-ве, четные- по значению.
Например:
Было: a1b22c4
Стало: a11b44c8

Я пишу такой код:

Private Sub Êîììàíäà1_Click()
Open "d:\testing\testing.txt" For Input As #1
Do Until EOF(1)
Line Input #1, S$
List1.AddItem S
Loop
Close #1
Open "d:\testing\testing_rez.txt" For Output As #2
Open "d:\testing\testing.txt" For Input As #1
For i = 1 To EOF(1)
h = Mid(S, i, i + 1)
If h >= "a" And h <= "z" Then
Print #2, h
Else
If h Mod 2 <> 0 Then
x$ = h & h
Print #2, x
Else
w% = 2 * h
Print #2, w
End If
End If
Next
Close #1, 2
Open "d:\testing\testing_rez.txt" For Input As #2
Do Until EOF(2)
Line Input #2, S$
List2.AddItem S
Loop
Close #2

Почему-то новый текстовый файл вообще не заполняется, из отладчика я понял, что вообще не проделывается цикл.
Помогите, кто может, советом- в работе с файлами я новичок...
Заранее благодарен за помощь! :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.02.2006 (Вс) 13:41

Из конструкции Do Until EOF(1) мы видим, что EOF - функция, возвращающая true или false. Тогда каков смысл цикла For i = 1 To EOF(1)?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.02.2006 (Вс) 17:22

Уууу какое у тебя решение... оптимизированное... :lol:

Держи
Код: Выделить всё

Public Sub Main()
    Open "data.in" For Input As #1
    Open "data.out" For Output As #2
        Do Until EOF(1)
            Input #1, s_in$
            s_out$ = ""
            For i = 1 To Len(s_in$)
                sign$ = Mid$(s_in$, i, 1)
                If IsNumeric(sign$) Then
                    If CByte(sign$) Mod 2 Then
                        sign$ = sign$ + sign$
                    Else
                        sign$ = CStr(CLng(sign$) * 2)
                    End If
                End If
                s_out$ = s_out$ + sign$
            Next i
            Print #2, s_out$
        Loop
    Close
End Sub
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dv_art
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 19.02.2006 (Вс) 13:21

Сообщение dv_art » 20.02.2006 (Пн) 10:15

Спасибо большое за помощь!!![/code]


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 87

    TopList