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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ шаблоны http://www.cyberforum.ru/cpp-beginners/thread24631.html
// lab1.cpp : main project file. #include "stdafx.h" #include <iostream> #include <conio.h> using namespace System; using namespace std; const double pi=3.14159;
C++ Проверить маленькую программу #include <iostream> using namespace std; template <class X> X min(X a, X b) { if (a<=b) return a; else return b; } void main() http://www.cyberforum.ru/cpp-beginners/thread24618.html
Передача параметров в функцию (сортировка двусвязного списка) C++
Дан работающий код (двусвязный список+сортировка его пузырьком) Нужно выделенную часть оформить в отдельную функцию. я делаю три параметра - List* head, List* tail, int n проблема в том, что я никак не соображу, как передавать параметры, чтобы head и tail при выходе из процедуры изменялись) объясните пожалуйста! собсно, код:
C++ PsTerminateSystemThread
Привет пишу KMD драйвер фильтр в ф-и DriverEntry создал поток //... status = PsCreateSystemThread(&hThread,THREAD_ALL_ACCESS, NULL, NtCurrentProcess(),NULL,Func,(PVOID)dev_ext ); if (status != STATUS_SUCCESS) { DbgPrint("++DR.sys++ THREAD not create!!"); } else{
C++ Не печатает русские символы http://www.cyberforum.ru/cpp-beginners/thread24602.html
Возник такой вопрос. Почему в консоле не выводятся кирилические символы? Когда я использую такой код: cout << "Проверка" выводится не ожидаемая "Проверка" , а просто набор символ. Я слышал, что в .NET есть функция Console::Write(), которая отображает любые символы, но в своей программе я не использую .NET Может ли консоль "говорить" по русски, и если умеет, то как это сделать?
C++ реализация класса"вектор" пожалусто дайти информации на эту тему... а то не могу найдти, а Лаптев" Эксперт курс на С++" не помогает...:wall: подробнее

Показать сообщение отдельно
RazorQ
577 / 344 / 9
Регистрация: 06.02.2009
Сообщений: 1,386

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

02.03.2009, 08:37. Просмотров 1453. Ответов 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() - возвращает строку, содержащую указанное число знаков с правой стороны строки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru