Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
RazorQ
577 / 344 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
#1

Перевод программы с VB.NET на C++ - C++

02.03.2009, 08:37. Просмотров 1469. Ответов 4
Метки нет (Все метки)

Доброго времени суток! На просторах интернета я нашел исходный текст одной интересной программки. Смысл в том, что программа отвечает на вопросы, которые вводит пользователь. Своего рода AI(искусственный интелект) Исходник написан на Visual Basic.NET. Я дружу с VB.NET, но ближе мне C++ и поэтому я решил перевести прогу на C++. Вот исходный код на VB.NET:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
Module Module1
    Public otvet As String
    ' отсюда начинается выполнение программы
    Sub Main()
        Console.WriteLine("Привет! Давай поговорим. Задай мне любой вопрос.")
        Do
            otvet = Console.ReadLine()
            Console.WriteLine(AI(otvet))
        Loop
    End Sub
    ' функция которая возвращает ответ
    Function OkQuestion(ByRef TheText As String) As String
        Dim TempText As String
        Dim Ekstra As String = ""
        Dim Text(9) As String
        Dim Number As Short
        If InStr(1, TheText, "elvis", CompareMethod.Text) Then GoTo Theking
        TempText = Replace(TheText, "", "")
        If TheText = TempText Then
            Ekstra = ""
        Else
            Ekstra = " "
        End If
Start:
        If InStr(1, TheText, "Что" & Ekstra, CompareMethod.Text) Then GoTo WhichWhatHow
        If InStr(1, TheText, "Как" & Ekstra, CompareMethod.Text) Then GoTo WhichWhatHow
        If InStr(1, TheText, "Где" & Ekstra, CompareMethod.Text) Then GoTo Where
        If InStr(1, TheText, "Почему" & Ekstra, CompareMethod.Text) Then GoTo Why
        If InStr(1, TheText, "Который" & Ekstra, CompareMethod.Text) Then GoTo WhichWhatHow
        If InStr(1, TheText, "Кто" & Ekstra, CompareMethod.Text) Then GoTo Who
        If InStr(1, TheText, "Когда" & Ekstra, CompareMethod.Text) Then GoTo When_Renamed
        Text(0) = "Я думаю так"
        Text(1) = "А ты что думаешь?"
        Text(2) = "Да"
        Text(3) = "Нет"
        Text(4) = "Все знают, что нет"
        Text(5) = "Наверно"
        Text(6) = "He уверен"
        Text(7) = "Да, конечно."
        Text(8) = "Нет"
        Text(9) = "Все знают, что да"
        Number = Int((Rnd() * 10) + 1) - 1
        Return Text(Number)
        Exit Function
WhichWhatHow:
        Text(0) = "Откуда мне знать?"
        Text(1) = "Я устал - поговорим завтра"
        Text(2) = "Эхх, мне бы твои заботы"
        Text(3) = "Hy, как тебе сказать"
        Text(4) = "Любопытный вопрос ... кто-то уже спрашивал"
        Text(5) = "Нехороший вопрос"
        Text(6) = "Ты хочешь знать, что я думаю об этом?"
        Text(7) = "Я не хочу говорить об этом"
        Text(8) = "Извини, забыл"
        Text(9) = "Терпеть не могу любопытных людей"
        Number = Int((Rnd() * 10) + 1) - 1
        Return Text(Number)
        Exit Function
Where:
        Text(0) = "Может во Флориде?"
        Text(1) = "Я думаю, это где-то в Америке."
        Text(2) = "Подожди...Я пороюсь в атласе."
        Text(3) = "В Германии"
        Text(4) = "Прямо на небесах"
        Text(5) = "На скотном дворе"
        Text(6) = "Сам догадайся"
        Text(7) = "В Белом доме"
        Text(8) = "Последний раз я его видел в нижнем белье"
        Text(9) = "Может в стиральной машине?"
        Number = Int((Rnd() * 10) + 1) - 1
        Return Text(Number)
        Exit Function
Why:
        Text(0) = "Потому что кончается на У, дурачок!"
        Text(1) = "Открой энциклопедию!"
        Text(2) = "Это судьба"
        Text(3) = "Гм, я не знаю"
        Text(4) = "А я так хочу!"
        Text(5) = "Спроси Монику Левински"
        Text(6) = "Ну, ты попроще задавай вопросы"
        Text(7) = "Я не помню"
        Text(8) = "Поясни вопрос"
        Text(9) = "А почему ты не спросишь об этом маму?"
        Number = Int((Rnd() * 10) + 1) - 1
        Return Text(Number)
        Exit Function
Who:
        Text(0) = "Ты не думаешь, что это Владимир Жириновский"
        Text(1) = "Бонд, Джеймс Бонд"
        Text(2) = "Джим Кэрри"
        Text(3) = "Чужой"
        Text(4) = "Тетя Соня"
        Text(5) = "Врач-гинеколог"
        Text(6) = "Дед в кожаном пальто"
        Text(7) = "Твой папочка"
        Text(8) = "Билл Клинтон"
        Text(9) = "Памела Андерсон"
        Number = Int((Rnd() * 10) + 1) - 1
        Return Text(Number)
        Exit Function
When_Renamed:
        Text(0) = "Завтра"
        Text(1) = "Вчера"
        Text(2) = "Это было в 1900"
        Text(3) = "Ты будешь слишком стар, когда это будет"
        Text(4) = "Давно это было"
        Text(5) = "Во время гражданской войны"
        Text(6) = "Когда ты родился"
        Text(7) = "Когда ты первый раз побрился"
        Text(8) = "Ну, это было когда Билл Клинтон и Моника Левински..."
        Text(9) = "Сейчас"
        Number = Int((Rnd() * 10) + 1) - 1
        Return Text(Number)
        Exit Function
Theking:
        If InStr(1, TheText, "alive", CompareMethod.Text) Or InStr(1, TheText, "living", 
СompareMethod.Text) 
 Or InStr(1, TheText, "dead", CompareMethod.Text) Then
 
            Return "А ты как думал ? Конечно жив. Он сейчас король ;)"
        Else
            GoTo Start
        End If
    End Function
    ' если ответ не найден, то отвечаем в общем
    Function NoQuestion() As Object
        Dim Text(9) As String
        Dim Number As Short
        Text(0) = "Ну, попробуй подумать"
        Text(1) = "Я лучше отвечу на вопросы"
        Text(2) = "А может лучше задашь вопросик"
        Text(3) = "Я люблю вопросы"
        Text(4) = "Пожалуйста, задай мне вопрос"
        Text(5) = "Я всего лишь машина .... ну, спроси меня"
        Text(6) = "Попробуй еще раз задать вопрос"
        Text(7) = "0K, но сейчас задай вопрос"
        Text(8) = "Попробуй задать мне вопрос"
        Text(9) = "Я только отвечаю"
        Randomize()
        Number = Int((Rnd() * 10) + 1) - 1
        NoQuestion = Text(Number)
    End Function
 
    Function AI(ByRef Text As String) As String
        Dim TempText As String
        Dim Ekstra As String = ""
        TempText = Text
        'функция InStr() возвращает целое число, указывающее начальную                  
    'позицию первого вхождения одной строки в другую.
        'здесь мы проверяем, есть ли один из вопросов или знак ?
        If InStr(1, Text, "Что" & Ekstra, CompareMethod.Text) Then GoTo Question
        If InStr(1, Text, "Как" & Ekstra, CompareMethod.Text) Then GoTo Question
        If InStr(1, Text, "Где" & Ekstra, CompareMethod.Text) Then GoTo Question
        If InStr(1, Text, "Почему" & Ekstra, CompareMethod.Text) Then GoTo Question
        If InStr(1, Text, "Который" & Ekstra, CompareMethod.Text) Then GoTo Question
        If InStr(1, Text, "Кто" & Ekstra, CompareMethod.Text) Then GoTo Question
        If InStr(1, Text, "Когда" & Ekstra, CompareMethod.Text) Then GoTo Question
        'функция Right() возвращает строку, содержащую указанное число знаков                
    'с правой стороны строки.
        If Microsoft.VisualBasic.Right(TempText, 1) = "?" Then GoTo Question
        'если ничего не найдено, то переходим к функции NoQuestion()
        Return NoQuestion()
        Exit Function
Question:
 
        Return OkQuestion(Text)
    End Function
End Module
этот код надо перевести на C++. Все бы ничего, да библиотечные функции VB.NET просто так на C++ не переводятся.

Добавлено через 21 час 39 минут 2 секунды
Что ж. Я вижу никто не берется за это. Тогда такой упрощенный вопрос: какие еть аналоги функций InStr(), Right() в языке C++. Объясню:
Функция InStr() - возвращает целое число, указывающее начальную позицию первого вхождения одной строки в другую.
Функция Right() - возвращает строку, содержащую указанное число знаков с правой стороны строки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2009, 08:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод программы с VB.NET на C++ (C++):

Перевод текста с c++ на vb.net - C++
У самого ничего не получилось. а штука очень нужна для написания вебинтерфейса для сервера вентрило. скрипт хеширует пароль, который потом...

Перевод программы на С++ - C++
program lab3; var a:array of integer; i,n,p:integer; begin p:=1; writeln(' Решение задачи '); ...

Перевод программы на С++ - C++
Доброго времени суток, дамы и господа. Нужна небольшая помощь. Пишу курсовую, сам изучаю C#. Но совершенно ничего не успеваю, а нужно еще...

перевод программы - C++
Заданы своими координатами N точек на плоскости и два круга ради¬у¬са¬ми R1 и R2 (R1 < R2) с центром в начале координат. Определить,...

Перевод программы - C++
Здравствуйте уважаемые,пользователи CyberForum У меня возник вопрос. Вот программа: ссылки на сторонние форумы запрещены правилами ...

Перевод программы - C++
var i, n, k : byte; a,b,c : real; begin readln(n); for i:=1 to n do begin ...

4
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
02.03.2009, 18:05 #2
А ты в документации по стандартным классам посмотри. Если не найдеш, то деваться некуда - будешь сам своии классы писать.
0
RazorQ
577 / 344 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
02.03.2009, 20:40  [ТС] #3
Да я чувствую придется
0
h01d3r
Сообщений: n/a
24.03.2009, 15:52 #4
А что не позволяет юзать С++ CLI ?!
RazorQ
577 / 344 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
24.03.2009, 15:55  [ТС] #5
Я уже давно написал програмку. И все функции тоже свои писал
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2009, 15:55
Привет! Вот еще темы с ответами:

Перевод программы на C++ - C++
Здравствуйте друзья. Прошу вас о помощи, помогите с переводом программы с Pascal на C++. Буду неимоверно благодарен тому, кто поможет, в...

Перевод программы - C++
Если кто может перевести программу с C++ на VB6, то стучите в асю 916-291-3 В программе 101 строка. Я бы и сам перевел, но там есть...

Перевод программы (C# -> C++) - C++
Ребят,помогите переписать программу из c# в с++ using System; using System.Collections.Generic; using System.Linq; using...

Перевод программы на С++ с Паскаля - C++
var s: string; i: byte; begin readln(s); i := 1; // избавляемся от пробелов спереди while s = ' ' do...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
24.03.2009, 15:55
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru