Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Где косяк? Добавлено: 21.08.03 08:11  

Автор вопроса:  Calhoon | Web-сайт: 4elovekssn.blog.ru | ICQ: 789764 

Help! Прога (вариант искуственного интеллекта) читает файл, в файле содержатся строки типа:
ФАМИЛИЯ
ИМЯ
!
Как-как?
Мое что-ли?
.

По идее прога, найдя совпадение ("ИМЯ" = "ИМЯ"), должна кидать ответ (фразы ниже символа "!"). Вот фрагмент кода (файл открыт, переменные обьявлены, идет чтение):
 Do While EOF(5) = False
        Line Input #5, strRead
        If strRead = "" Then GoTo mLoop
        If strRead = "!" Then 'если символ - !, проскакиваем ответы
            Do Until strRead = "."
                Line Input #5, strRead
            Loop
        End If
        If strRead = "." Then GoTo mLoop
        'найдено слово
        For n = 1 To (Len(txtText) - Len(strRead)) + 1
            Dim strKus As String
            strKus = UCase(Mid(txtText, n, Len(strRead)))
            If strKus = strRead Then 'совпадение
                Do Until strRead = "!" 'проскакиваем варианты, ищем ответы
                    Line Input #5, strRead
                Loop
                Dim a As Integer
                a = 0
answNxt:
                a = a + 1
                Line Input #5, strRead
                If strRead <> "." Then 'найден ответ
                    answ(a) = strRead
                    GoTo answNxt
                End If
                'больше ответов нет, показываем один из них
                Randomize Timer
                txtAll = txtAll + Chr(13) + Chr(10) + lblSobName + ": " + answ(Int((a - 1) * Rnd + 1)): GoTo mClose
            End If
        Next n
mLoop:
    Loop
    'нет совпадения - нечего ответить
    Randomize Timer
    txtAll = txtAll + Chr(13) + Chr(10) + lblSobName + ": " + strDknow(Int(5 * Rnd + 1))
mClose:
Close #5

Выполняю прогу по строке, в 14-й строке (If strKus = strRead Then) strKus = "ИМЯ", strRead = "ИМЯ", а условие не выполняется. Почему?

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 E-Man



Вопросов: 3
Ответов: 132
 Профиль | | #1 Добавлено: 21.08.03 21:07

Кинь весь проект на мэйл помогу.

phoenix_group@mail.ru

Ответить

Номер ответа: 2
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #2 Добавлено: 21.08.03 21:23
u menya vse rabotaet!

Ответить

Номер ответа: 3
Автор ответа:
 Calhoon



ICQ: 789764 

Вопросов: 90
Ответов: 230
 Web-сайт: 4elovekssn.blog.ru
 Профиль | | #3
Добавлено: 26.08.03 05:06

Ну как так????

Вот полностью:

Dim answ(20) As String 'варианты ответов - максимум 20

 

Open App.Path & "\" & SobName For Input As #5
    For n = 1 To 11 'первые одиннадцать строк пропускаем (SobName, приветствия и не знания)
        Line Input #5, strRead
    Next n
    Do While EOF(5) = False
        Line Input #5, strRead
        If strRead = "" Then GoTo mLoop
        If strRead = "!" Then 'если символ - !, проскакиваем ответы
            Do Until strRead = "."
                Line Input #5, strRead
            Loop
        End If
        If strRead = "." Then GoTo mLoop
        'найдено слово
        For n = 1 To (Len(txtText) - Len(strRead)) + 1
            Dim strKus As String
            strKus = UCase(Mid(txtText, n, Len(strRead)))
           

' эти строки я подставил для проверки
            txtAll = txtAll + Chr(13) + Chr(10) + strKus + "<->" + strRead
            txtAll = txtAll + "->" + strKus = strRead
 ' ----------------------------------------------------------
            If strKus = strRead Then 'совпадение
                Do Until strRead = "!" 'проскакиваем варианты, ищем ответы
                    Line Input #5, strRead
                Loop
                Dim a As Integer
                a = 0
answNxt:
                a = a + 1
                Line Input #5, strRead
                If strRead <> "." Then answ(a) = strRead: GoTo answNxt 'найден ответ
               
                'больше ответов нет, показываем один из них
                Randomize Timer
                txtAll = txtAll + Chr(13) + Chr(10) + lblSobName + ": " + answ(Int((a - 1) * Rnd + 1)): GoTo mClose
            End If
        Next n
mLoop:
    Loop
    'нет совпадения - нечего ответить
    Randomize Timer
    txtAll = txtAll + Chr(13) + Chr(10) + lblSobName + ": " + strDknow(Int(5 * Rnd + 1))
mClose:
Close #5

txtText = ""
txtText.SetFocus
End Sub

[sensored] в том, что длинные фразы он обрабатывает (когда несколько слов ввожу), а короткие - нет? Есть идеи?

Ответить

Номер ответа: 4
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #4 Добавлено: 26.08.03 05:25

a ty uveren chto iba = IMYA?

a to u mya vse rabotaet...

Ответить

Номер ответа: 5
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #5 Добавлено: 26.08.03 05:25

a ty uveren chto iba = IMYA?

a to u mya vse rabotaet...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам