Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142

Составить программу, позволяющую компьютеру и человеку играть в слова

06.04.2019, 13:01. Показов 4704. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите, пожалуйста, программу по игре в слова.
Если правильно понимаю, суть в следующем: Комп выводит, допустим, 3 тематики, Я выбираю из них, например, "Города". Я ввожу какое-либо слово, комп в ответ выводит на экран слово, начинающееся на ту букву, на которую закончилось моё (тот я еще объяснятель). Пример: ввожу слово "Москва", компьютер выводит "Астрахань" (в таком случае, скорее всего, нужно отвечать на букву "н"), пишу "Новосибирск" и так далее.

То есть:
Предварительно программа объясняет правила игры и позволяет уточнить их в любой момент. Тематикой игры могут быть по выбору города, животные, растения и т. д. Тема выбирается из предложенных компьютером (не менее 3).

С принципом работы постараюсь разобраться сам, но желательно написать её понятной для новичка

Добавлено через 29 секунд
Заранее спасибо)
Это очень важная для меня задача
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2019, 13:01
Ответы с готовыми решениями:

Составить программу, позволяющую компьютеру и человеку играть в слова
Составить программу, позволяющую компьютеру и человеку играть в слова. Предварительно программа объясняет правила игры и позволяет уточнить...

Составить программу позволяющую получить словесное описания школьных отметок
Составить программу позволяющую получить словесное описания школьных отметок (1-плохо 2-неудовлетворительно 3-удавлетворительно 4- хорошо...

Составить программу, позволяющую получить словесное описание школьных отметок
Задачи довольно простые. Я проста не разбираюсь в этом языке программирование. Проста срочно нужны решение. Думаю дальнейшем его...

19
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
06.04.2019, 13:53
llatibro, ну так давайте базу данных по тематикам составляйте.
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
06.04.2019, 14:43
llatibro, привет!
Не то что сложно, муторно, долго этот код писать и внимательно нужно это делать.
Держи код. Базу по сущностям сам составишь. По крайней мере, я на это надеюсь.

C++
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
169
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
#include <map>
 
using namespace std;
 
wstring wstring_towlower(const wstring &s);
 
int main()
{
    wcout.imbue(locale("rus_rus.866"));
    wcin.imbue(locale("rus_rus.866"));
 
    wstring bad_symbols = L"ыьъ";
    vector<pair<wstring, vector<wstring>>> words;
    words.push_back(make_pair(
        L"Города",
        vector<wstring>
    {
        L"Тагил",
        L"Липецк",
        L"Восточный",
        L"Москва",
        L"Киев",
        L"Уфа",
        L"Киров"
        //...
    }
    ));
    words.push_back(make_pair(
        L"Животные",
        vector<wstring>
    {
        L"Собка",
        L"Змей",
        L"******",
        L"Верблюд"
        //...
    }
    ));
    words.push_back(make_pair(
        L"Растения",
        vector<wstring>
    {
        L"Белладонна",
        L"Малина",
        L"Ландыш",
        L"Папоротник"
        //...
    }
    ));
    for (auto &category : words)
    {
        for (auto &word : category.second)
        {
            word = wstring_towlower(word);
        }
    }
 
    wcout << L"Выберете одну из категорий: " << endl;
    size_t ind = 0u;
    for (const auto &pr : words)
    {
        wcout << ++ind << L" " << pr.first << endl;
    }
    size_t selected_category;
    for (;;)
    {
        cin >> selected_category;
        if (selected_category > words.size())
        {
            wcout << L"Ошибка" << endl;
        }
        else
        {
            break;
        }
    }
    auto words_in_selected_category = words[selected_category - 1].second;
    wchar_t old_char = L' ';
    wstring set_word = L"";
    wcin.get();
    for (;;)
    {
        //wcout << L"old_char = " << old_char << endl;
        wcout << L"Введите слово" << endl;
        wstring word;
        /*if (wcin.rdbuf()->in_avail())
        {
            wcout << 7 << endl;
            wcin.ignore(wcin.rdbuf()->in_avail(), L'\n');
        }*/
        //wcin.get();
        getline(wcin, word);
        word = wstring_towlower(word);
        //wcout << L"word[0u] = " << word[0u] << endl;
        if (word[0u] != old_char && !set_word.empty())
        {
            wcout << L"Слово начинается НЕ на ту букву" << endl;
            continue;
        }
        auto it = find(words_in_selected_category.begin(), words_in_selected_category.end(), word);
        if (it == words_in_selected_category.end())
        {
            wcout << L"Я не знаю такого слова. Го ещё раз" << endl;
            continue;
        }
        else
        {
            set_word = *it;
        }
        for (auto &c : set_word)
        {
            c = c == L'й' ? L'и' : c;
            c = c == L'ё' ? L'е' : c;
        }
        if (bad_symbols.find(set_word.back()) == wstring::npos)
        {
            old_char = set_word.back();
        }
        else
        {
            old_char = set_word[set_word.size() - 1];
        }
        auto predicate = [old_char](const wstring &s)
        {
            return s.front() == old_char;
        };
        auto it2 = find_if(words_in_selected_category.begin(), words_in_selected_category.end(), predicate);
        if (it2 == words_in_selected_category.end())
        {
            wcout << L"Не знаю, что тебе сказать на эту букву " << old_char << endl;
            break;
        }
        else
        {
            set_word = *it2;
            wcout << L"Голос из компьютера " << set_word << endl;
        }
        for (auto &c : set_word)
        {
            c = c == L'й' ? L'и' : c;
            c = c == L'ё' ? L'е' : c;
        }
        if (bad_symbols.find(set_word.back()) == wstring::npos)
        {
            old_char = set_word.back();
        }
        else
        {
            old_char = set_word[set_word.size() - 1];
        }
    }
 
    system("pause");
    return 0;
}
 
wstring wstring_towlower(const wstring &s)
{
    wstring output;
    setlocale(LC_ALL, "Russian");
    transform(s.begin(), s.end(), back_inserter(output), ::towlower);
    setlocale(LC_ALL, "C");
    return output;
}
Миниатюры
Составить программу, позволяющую компьютеру и человеку играть в слова  
2
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
06.04.2019, 14:48
У меня код чуть не доработан. В слове Восточный последние две буквы плохие: й, ы. У меня программа умеет только один символ справа смахивать, если он плохой.

Добавлено через 1 минуту
Пофиксил.

Кликните здесь для просмотра всего текста

C++
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
169
170
171
172
173
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
#include <map>
 
using namespace std;
 
wstring wstring_towlower(const wstring &s);
 
int main()
{
    wcout.imbue(locale("rus_rus.866"));
    wcin.imbue(locale("rus_rus.866"));
 
    wstring bad_symbols = L"ыьъ";
    vector<pair<wstring, vector<wstring>>> words;
    words.push_back(make_pair(
        L"Города",
        vector<wstring>
    {
        L"Тагил",
        L"Липецк",
        L"Восточный",
        L"Москва",
        L"Киев",
        L"Уфа",
        L"Киров"
        //...
    }
    ));
    words.push_back(make_pair(
        L"Животные",
        vector<wstring>
    {
        L"Собка",
        L"Змей",
        L"******",
        L"Верблюд"
        //...
    }
    ));
    words.push_back(make_pair(
        L"Растения",
        vector<wstring>
    {
        L"Белладонна",
        L"Малина",
        L"Ландыш",
        L"Папоротник"
        //...
    }
    ));
    for (auto &category : words)
    {
        for (auto &word : category.second)
        {
            word = wstring_towlower(word);
        }
    }
 
    wcout << L"Выберете одну из категорий: " << endl;
    size_t ind = 0u;
    for (const auto &pr : words)
    {
        wcout << ++ind << L" " << pr.first << endl;
    }
    size_t selected_category;
    for (;;)
    {
        cin >> selected_category;
        if (selected_category > words.size())
        {
            wcout << L"Ошибка" << endl;
        }
        else
        {
            break;
        }
    }
    auto words_in_selected_category = words[selected_category - 1].second;
    wchar_t old_char = L' ';
    wstring set_word = L"";
    wcin.get();
    for (;;)
    {
        //wcout << L"old_char = " << old_char << endl;
        wcout << L"Введите слово" << endl;
        wstring word;
        /*if (wcin.rdbuf()->in_avail())
        {
            wcout << 7 << endl;
            wcin.ignore(wcin.rdbuf()->in_avail(), L'\n');
        }*/
        //wcin.get();
        getline(wcin, word);
        word = wstring_towlower(word);
        //wcout << L"word[0u] = " << word[0u] << endl;
        if (word[0u] != old_char && !set_word.empty())
        {
            wcout << L"Слово начинается НЕ на ту букву" << endl;
            continue;
        }
        auto it = find(words_in_selected_category.begin(), words_in_selected_category.end(), word);
        if (it == words_in_selected_category.end())
        {
            wcout << L"Я не знаю такого слова. Го ещё раз" << endl;
            continue;
        }
        else
        {
            set_word = *it;
        }
        for (auto &c : set_word)
        {
            c = c == L'й' ? L'и' : c;
            c = c == L'ё' ? L'е' : c;
        }
        if (bad_symbols.find(set_word.back()) == wstring::npos)
        {
            old_char = set_word.back();
        }
        else
        {
            old_char = set_word[set_word.size() - 1];
        }
        auto predicate = [old_char](const wstring &s)
        {
            return s.front() == old_char;
        };
        auto it2 = find_if(words_in_selected_category.begin(), words_in_selected_category.end(), predicate);
        if (it2 == words_in_selected_category.end())
        {
            wcout << L"Не знаю, что тебе сказать на эту букву " << old_char << endl;
            break;
        }
        else
        {
            set_word = *it2;
            wcout << L"Голос из компьютера " << set_word << endl;
        }
        for (auto &c : set_word)
        {
            c = c == L'й' ? L'и' : c;
            c = c == L'ё' ? L'е' : c;
        }
        for (;;)
        {
            if (bad_symbols.find(set_word.back()) == wstring::npos)
            {
                old_char = set_word.back();
                break;
            }
            else
            {
                set_word.pop_back();
            }
        }
    }
 
    system("pause");
    return 0;
}
 
wstring wstring_towlower(const wstring &s)
{
    wstring output;
    setlocale(LC_ALL, "Russian");
    transform(s.begin(), s.end(), back_inserter(output), ::towlower);
    setlocale(LC_ALL, "C");
    return output;
}


Добавлено через 47 секунд
Для новичка код возможно будет сложен к пониманию.
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
08.04.2019, 17:03  [ТС]
SomniPhobia, Буквы "й" и "ё" нужно занести в список плохих. То есть их не нужно приравнивать к "и" и "е".
Спасибо большое что столько работы сделали, однако у меня просьба имеется: Если вам не трудно и вы знаете как это делается, то лучше было бы сделать данную программу, чтоб она брала слова из файла, а не перечислять их все в коде.
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
09.04.2019, 09:26
Лучший ответ Сообщение было отмечено llatibro как решение

Решение

Цитата Сообщение от llatibro Посмотреть сообщение
То есть их не нужно приравнивать к "и" и "е".
Убери или закомментируй строки 115 - 119, 143 - 147.
Цитата Сообщение от llatibro Посмотреть сообщение
Буквы "й" и "ё" нужно занести в список плохих.
Строка 17, туда дописать эти буквы. Получится так.
C++
1
wstring bad_symbols = L"ыьъйё";
Цитата Сообщение от llatibro Посмотреть сообщение
чтоб она брала слова из файла, а не перечислять их все в коде
Можно сделать хоть что. Сейчас попробую.

Добавлено через 37 минут
llatibro, вот код, где список по категориям подхватывается из файла *.txt.

Кликните здесь для просмотра всего текста

C++
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
#include <map>
#include <iomanip>
#include <locale>
#include <xstring>
 
using namespace std;
 
wstring wstring_towlower(const wstring &s);
 
int main()
{
    wcout.imbue(locale("rus_rus.866"));
    wcin.imbue(locale("rus_rus.866"));
 
    wstring bad_symbols = L"ыьъйё";
    vector<pair<wstring, vector<wstring>>> words;
 
    /*
    //Создание файла для составления списка слов
    wofstream wfout;
    wfout.imbue(locale("rus_rus.866"));
    wfout.open("List_words.txt");
    wfout << L"~Категория" << endl;
    wfout << L"Слово" << endl;
    wfout.close();
    return 0;
    */
 
    //Чтение слов по категориям из файла с именем List_words.txt
    wifstream wfin;
    wfin.open("List_words.txt");
    wfin.imbue(locale("rus_rus.866"));
    if (!wfin.is_open())
    {
        wcout << L"Ошибка. Не удаётся открыть файл с данными" << endl;
        return 1;
    }
    wstring category_name;
    vector<wstring> words_in_this_category;
    for (; wfin.good();)
    {
        wstring line_in_file;
        getline(wfin, line_in_file);
        if (line_in_file.front() == '~')
        {
            if (!words_in_this_category.empty())
            {
                words.push_back(make_pair(category_name, words_in_this_category));
            }
            line_in_file.erase(line_in_file.begin());
            category_name = line_in_file;
            words_in_this_category.clear();
        }
        else
        {
            words_in_this_category.push_back(line_in_file);
        }
    }
    if (!words_in_this_category.empty())
    {
        words.push_back(make_pair(category_name, words_in_this_category));
    }
    wfin.close();
 
    
    //Показывает список слов, считанный из файла
    wcout.fill('+');
    for (const auto &pr : words)
    {
        wcout << L"Категория " << pr.first << endl;
        wcout << L"В ней слова:" << endl;
        for (const auto &word : pr.second)
        {
            wcout << word << endl;
        }
        wcout << setw(70u) << L"" << endl;
    }
    wcout.fill(' ');
    
 
    for (auto &category : words)
    {
        for (auto &word : category.second)
        {
            word = wstring_towlower(word);
        }
    }
 
    wcout << L"Выберете одну из категорий: " << endl;
    size_t ind = 0u;
    for (const auto &pr : words)
    {
        wcout << ++ind << L" " << pr.first << endl;
    }
    size_t selected_category;
    for (;;)
    {
        cin >> selected_category;
        if (selected_category > words.size())
        {
            wcout << L"Ошибка" << endl;
        }
        else
        {
            break;
        }
    }
    auto words_in_selected_category = words[selected_category - 1].second;
    wchar_t old_char = L' ';
    wstring set_word = L"";
    wcin.get();
    for (;;)
    {
        wcout << L"Введите слово" << endl;
        wstring word;
        getline(wcin, word);
        word = wstring_towlower(word);
        if (word[0u] != old_char && !set_word.empty())
        {
            wcout << L"Слово начинается НЕ на ту букву" << endl;
            continue;
        }
        auto it = find(words_in_selected_category.begin(), words_in_selected_category.end(), word);
        if (it == words_in_selected_category.end())
        {
            wcout << L"Я не знаю такого слова. Го ещё раз" << endl;
            continue;
        }
        else
        {
            set_word = *it;
        }
        for (auto &c : set_word)
        {
            c = c == L'й' ? L'и' : c;
            c = c == L'ё' ? L'е' : c;
        }
        if (bad_symbols.find(set_word.back()) == wstring::npos)
        {
            old_char = set_word.back();
        }
        else
        {
            old_char = set_word[set_word.size() - 1];
        }
        auto predicate = [old_char](const wstring &s)
        {
            return s.front() == old_char;
        };
        auto it2 = find_if(words_in_selected_category.begin(), words_in_selected_category.end(), predicate);
        if (it2 == words_in_selected_category.end())
        {
            wcout << L"Не знаю, что тебе сказать на эту букву " << old_char << endl;
            break;
        }
        else
        {
            set_word = *it2;
            wcout << L"Голос из компьютера " << set_word << endl;
        }
        for (auto &c : set_word)
        {
            c = c == L'й' ? L'и' : c;
            c = c == L'ё' ? L'е' : c;
        }
        for (;;)
        {
            if (bad_symbols.find(set_word.back()) == wstring::npos)
            {
                old_char = set_word.back();
                break;
            }
            else
            {
                set_word.pop_back();
            }
        }
    }
 
    system("pause");
    return 0;
}
 
wstring wstring_towlower(const wstring &s)
{
    wstring output;
    setlocale(LC_ALL, "Russian");
    transform(s.begin(), s.end(), back_inserter(output), ::towlower);
    setlocale(LC_ALL, "C");
    return output;
}


Сейчас опишу как работать с файлом списка слов.
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
09.04.2019, 09:38
llatibro,
1. Раскоменчиваешь строки 23 - 32.
2. Компилируешь и запускаешь программу.
3. В одной из папок проекта появится файл с именем List_words.txt Найди его.
4. Открой файл List_words.txt лучше всего NotePad++.
5. В правом нижнем углу NotePad++ проверь чтобы стояла кодировка OEM 866. Если так - то всё нормально.
В файле будет 3 строки.
1) ~Категория
2) Слово
3) [Пустая]
6. Составь в этом текстовом файле список слов по категориям, соблюдая следующие правила:
1) Отсутствие пустых строк
2) Название категории начинается с символа ~
3) Ниже идут слова, в каждой строке по одному слову (смотри скрин)
7. Сохрани текстовый файл (комбинация клавиш Ctrl + S).
8. Закомментируй в коде строки 23 - 32.
9. Откомпилируй и запусти программу.
10. Код строк 71 - 83 выведет на консоль список категорий и слов в них, прочитанных из файла List_words.txt. Проверь корректность принятого из файла списка слов (смотри скрин).
11. Если всё верно, то закомментируй строки 71 - 83.
12. Перекомпилируй и запусти программу.
Готово.
Попробуй выполнить инструкцию, изложенную выше, и отпишись получилось или не получилось настроить подхват слов из файла.
Миниатюры
Составить программу, позволяющую компьютеру и человеку играть в слова   Составить программу, позволяющую компьютеру и человеку играть в слова  
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
14.04.2019, 13:31  [ТС]
SomniPhobia, спасибо большое, буду пробовать)
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
14.04.2019, 18:19
llatibro, получилось?
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
07.06.2019, 16:53  [ТС]
SomniPhobia, Прошу прощения за такой поздний ответ, но именно сейчас настали дни когда нужно шлефовать эту программу) Да, всё работает замечательно, за исключением нескольких факторов, с которыми постараюсь разобраться сам, но если вдруг появятся вопросы, сможете меня проконсультировать?)
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
07.06.2019, 17:12
llatibro, привет!
Цитата Сообщение от llatibro Посмотреть сообщение
Прошу прощения за такой поздний ответ
Ничего страшного.
Цитата Сообщение от llatibro Посмотреть сообщение
если вдруг появятся вопросы, сможете меня проконсультировать?)
Да, смогу.
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
07.06.2019, 19:30  [ТС]
SomniPhobia, хорошо) И всё же я ошибся. Прога не игнорирует плохие буквы. Только пишет, что не знает слов на букву ы (и подобные)
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
07.06.2019, 21:08
Цитата Сообщение от llatibro Посмотреть сообщение
Прога не игнорирует плохие буквы. Только пишет, что не знает слов на букву ы (и подобные)
Было давно. Приходится вспоминать код.
Строки 171 - 182
Пробуй вместо
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (;;)
        {
            if (bad_symbols.find(set_word.back()) == wstring::npos)
            {
                old_char = set_word.back();
                break;
            }
            else
            {
                set_word.pop_back();
            }
        }
Написать
C++
1
2
3
4
5
6
7
8
9
            if (bad_symbols.find(set_word.back()) == wstring::npos)
            {
                old_char = set_word.back();
            }
            else
            {
cout << "Не знаю слов на букву " << set_word.back() << endl;
break;
            }
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
08.06.2019, 10:07  [ТС]
SomniPhobia, Не помогло. Заметил, что когда компьютер говорит слово, заканчивающееся на плохую букву, то я должен писать слово на букву перед ним. А когда я говорю слово, то комп выводил мол не знает что ответить на букву ы, например. А если поменять
Цитата Сообщение от SomniPhobia Посмотреть сообщение
Строки 171 - 182
то прога зависнет после первого ответа компьютера.
"Я: Тагил
К: Липецк
"
И все, дальше ничего не выводится и писать не могу
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
08.06.2019, 16:27
llatibro, у меня не виснет.
Миниатюры
Составить программу, позволяющую компьютеру и человеку играть в слова  
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
08.06.2019, 17:10  [ТС]
SomniPhobia, ок, у меня тоже, но если закомментировать строки, где Й и Ё заменяется на И и Е, то при вводе слова "Киев", компьютер отвечает "Восточный" и тут же выдает сообщение "Не знаю слов на букву " (точнее выводит кашу из разных символов, но по кол-ву букв понятно, что это за сообщение).
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
13.06.2019, 12:50  [ТС]
SomniPhobia, Еще раз поясню: Когда компьютер "говорит" слово "Восточный", то последние буквы отбрасываются и мне нужно сказать слово на букву "н", а когда я говорю слово "Восточный", то компьютер не отбрасывает "плохие" буквы. То есть правила распространяются только на меня, а на компьютер нет) Что можно с этим сделать?

Добавлено через 26 минут
Цитата Сообщение от llatibro Посмотреть сообщение
правила распространяются только на меня, а на компьютер нет)
Это если не менять
Цитата Сообщение от SomniPhobia Посмотреть сообщение
Строки 171 - 182
Добавлено через 2 минуты
Если их изменить так как Вы показали, то даже на меня эти правила не будут распространятся. То есть компьютер когда вводит слово с запрещенными буквами на конце, то останавливает программу и пишет, что не знает слов на букву
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
16.06.2019, 13:49  [ТС]
Сделал так, чтобы на комп тоже действовали эти правила)
Если Вы ещё можете держать со мной связь, то помогите, пожалуйста, сделать так, чтобы нельзя было использовать уже названные ранее слова. Буду благодарен

Добавлено через 1 час 32 минуты
SomniPhobia, А также хотелось бы узнать: зачем Вы меняете символы в нижний регистр? Из-за этого компьютер пишет наименования городов с маленькой буквы

Добавлено через 44 минуты
Зачем - я понял, но можно ли как-то сделать так, чтобы компьютер писал свои слова с большой буквы? Где нужно оформить переход в верхний регистр?
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
16.06.2019, 18:58
Лучший ответ Сообщение было отмечено llatibro как решение

Решение

llatibro, привет!
После строки 165 напиши
C++
1
words_in_selected_category.erase(it2);
Это удаляет из контейнера words_in_selected_category слово под итератором it2.
После строки 142.
C++
1
words_in_selected_category.erase(it);
0
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
17.06.2019, 14:25  [ТС]
SomniPhobia, Можно поточнее: куда писать эти две строки? Просто нумерация у нас с вами различается. Я дописывал еще некоторые моменты.

Добавлено через 12 минут
Всё, разобрался. Спасибо вам огромное)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2019, 14:25
Помогаю со студенческими работами здесь

Составить программу, не позволяющую вводить символы, написанные на клавишах нижнего ряда
Составить программу, не позволяющую вводить символы, написанные на клавишах нижнего ряда

Составить программу, позволяющую компьютеру и человеку играть в слова
Составить программу, позволяющую компьютеру и человеку играть в слова. Предварительно программа объясняет правила игры и позволяет уточнить...

Написать программу, позволяющую играть в морской бой двум игрокам
Здравствуйте. Задача заключается в следующем: написать программу, позволяющую играть в морской бой двум игрокам, на одном компьютере....

Составить программу позволяющую проверить...
Составить программу позволяющую проверить есть ли в одномерных массивах А(Т), B(T) одинаковые элементы и отыскивающий среди них наибольший....

составить программу, позволяющую в одномерном массиве,
составить программу, позволяющую в одномерном массиве, состоящем из N вещественных элементов вычислить сумму положительных элементов


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru