Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
1 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85

C++ Как реализовать поиск на Русском в консоле

06.04.2011, 20:54. Показов 3937. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать структуру ВИДЕОМАГАЗИН со следующими полями:
- Название фильма
- Режиссер
- Жанр
- Рейтинг популярности
- Цена диска
В магазине должно присутствовать не менее 10 дисков с разными фильмами и реализованы возможности:
- Поиск по названию
- Поиск по жанру
- Поиск по режиссеру
- Самый популярный фильм в жанре
- Показ всех записей и добавление


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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <math.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
using namespace std;
//---------------------------------------------------
const int size=20;
struct VideoStore                       //Создать структуру ВИДЕОМАГАЗИН со следующими полями:
{
    char    MovieName[50];              //Название фильма
    char    Director[50];               //Режиссер
    char    Genre[50];                  //Жанр
    int     PopularityRating;           //Рейтинг популярности
    int     PriceROM;                   //Цена диска
};
//---------------------------------------------------
void Filling(VideoStore *Movie);
void SearchByName(VideoStore *Movie);
void SearchByGenre(VideoStore *Movie);
void SearchByDirector(VideoStore *Movie);
        /*TheMostPopularFilmInTheGenre*/
void ShowingAll(VideoStore *Movie);
//---------------------------------------------------
int main()
{
    cout.setf(ios::left);
    setlocale(LC_ALL,"Russian");
    srand(time(NULL));
    SetConsoleTitleW(L"ВИДЕОМАГАЗИН");
//---------------------------------------------------
    VideoStore Movie[size];
//заполнение сделал через функцию чтобы не засирать main
    Filling(Movie); //В магазине должно присутствовать не менее 10 дисков с разными фильмами и реализованы возможности:
    int u=0;
    do
    {
        cout<<"1. Поиск по названию"<<endl
            <<"2. Поиск по жанру"<<endl
            <<"3. Поиск по режиссеру"<<endl
            <<"4. Самый популярный фильм в жанре"<<endl
            <<"5. Показ всех записей и добавление"<<endl
            <<"6. Выход"<<endl;
        cin>>u;
        switch(u)
        {
            case 1: SearchByName(Movie);            break;
            case 2: SearchByGenre(Movie);           break;
            case 3: SearchByDirector(Movie);        break;
            case 4:     break;
            case 5: for(int i=0;i<size;i++)
                        ShowingAll(&Movie[i]);      break;
            case 6:     break;
            default: cout<<"Неправильный ввод!\n";  break;
        }
    }
    while(u!=6);
 
    return 0;
}
void Filling(VideoStore *Movie)
{
    strcpy(Movie[0].MovieName,"Daybreakers");
    strcpy(Movie[1].MovieName,"The Book of Eli");
    strcpy(Movie[2].MovieName,"Legion");
    strcpy(Movie[3].MovieName,"Edge of Darkness");
    strcpy(Movie[4].MovieName,"Tooth Fairy");
    strcpy(Movie[5].MovieName,"Dorian Gray");
    strcpy(Movie[6].MovieName,"From Paris with Love");
    strcpy(Movie[7].MovieName,"Did You Hear About the Morgans?");
    strcpy(Movie[8].MovieName,"The Crazies");
    strcpy(Movie[9].MovieName,"Clash of the Titans");
    strcpy(Movie[10].MovieName,"Kick-Ass");
    strcpy(Movie[11].MovieName,"Robin Hood");
    strcpy(Movie[12].MovieName,"Prince of Persia: The Sands of Time");
    strcpy(Movie[13].MovieName,"The A-Team");
    strcpy(Movie[14].MovieName,"Splice");
    strcpy(Movie[15].MovieName,"Predators");
    strcpy(Movie[16].MovieName,"The Sorcerer's Apprentice");
    strcpy(Movie[17].MovieName,"Inception");
    strcpy(Movie[18].MovieName,"Salt");
    strcpy(Movie[19].MovieName,"The Expendables");
    strcpy(Movie[0].Director,"Майкл Спириг");
    strcpy(Movie[1].Director,"Альберт Хьюз");
    strcpy(Movie[2].Director,"Чарльз Скотт");
    strcpy(Movie[3].Director,"Мартин Кэмпбелл");
    strcpy(Movie[4].Director,"Майкл Лембек");
    strcpy(Movie[5].Director,"Оливер Паркер");
    strcpy(Movie[6].Director,"Пьер Морель");
    strcpy(Movie[7].Director,"Марк Лоуренс");
    strcpy(Movie[8].Director,"Брек Эйснер");
    strcpy(Movie[9].Director,"Луи Летерье");
    strcpy(Movie[10].Director,"Мэттью Вон");
    strcpy(Movie[11].Director,"Ридли Скотт");
    strcpy(Movie[12].Director,"Майк Ньюэлл");
    strcpy(Movie[13].Director,"Джо Карнахан");
    strcpy(Movie[14].Director,"Винченцо Натали");
    strcpy(Movie[15].Director,"Нимрод Антал");
    strcpy(Movie[16].Director,"Джон Тёртелтауб");
    strcpy(Movie[17].Director,"Кристофер Нолан");
    strcpy(Movie[18].Director,"Филлип Нойс");
    strcpy(Movie[19].Director,"Сильвестр Сталлоне");
    strcpy(Movie[0].Genre,"Ужасы");
    strcpy(Movie[1].Genre,"Боевик");
    strcpy(Movie[2].Genre,"Фэнтези");
    strcpy(Movie[3].Genre,"Триллер");
    strcpy(Movie[4].Genre,"Комедия");
    strcpy(Movie[5].Genre,"Триллер");
    strcpy(Movie[6].Genre,"Боевик");
    strcpy(Movie[7].Genre,"Комедия");
    strcpy(Movie[8].Genre,"Ужасы");
    strcpy(Movie[9].Genre,"Приключения");
    strcpy(Movie[10].Genre,"Комедия");
    strcpy(Movie[11].Genre,"Приключения");
    strcpy(Movie[12].Genre,"Приключения");
    strcpy(Movie[13].Genre,"Боевик");
    strcpy(Movie[14].Genre,"Фантастика");
    strcpy(Movie[15].Genre,"Фантастика");
    strcpy(Movie[16].Genre,"Фэнтези");
    strcpy(Movie[17].Genre,"Фантастика");
    strcpy(Movie[18].Genre,"Боевик");
    strcpy(Movie[19].Genre,"Боевик");
    Movie[0].PopularityRating=6;
    Movie[1].PopularityRating=7;
    Movie[2].PopularityRating=5;
    Movie[3].PopularityRating=6;
    Movie[4].PopularityRating=6;
    Movie[5].PopularityRating=9;
    Movie[6].PopularityRating=8;
    Movie[7].PopularityRating=6;
    Movie[8].PopularityRating=7;
    Movie[9].PopularityRating=6;
    Movie[10].PopularityRating=7;
    Movie[11].PopularityRating=8;
    Movie[12].PopularityRating=6;
    Movie[13].PopularityRating=8;
    Movie[14].PopularityRating=5;
    Movie[15].PopularityRating=8;
    Movie[16].PopularityRating=6;
    Movie[17].PopularityRating=8;
    Movie[18].PopularityRating=8;
    Movie[19].PopularityRating=7;
    Movie[0].PriceROM=26;
    Movie[1].PriceROM=26;
    Movie[2].PriceROM=26;
    Movie[3].PriceROM=26;
    Movie[4].PriceROM=59;
    Movie[5].PriceROM=26;
    Movie[6].PriceROM=26;
    Movie[7].PriceROM=26;
    Movie[8].PriceROM=26;
    Movie[9].PriceROM=26;
    Movie[10].PriceROM=26;
    Movie[11].PriceROM=26;
    Movie[12].PriceROM=26;
    Movie[13].PriceROM=37;
    Movie[14].PriceROM=103;
    Movie[15].PriceROM=38;
    Movie[16].PriceROM=26;
    Movie[17].PriceROM=26;
    Movie[18].PriceROM=26;
    Movie[19].PriceROM=56;
}
void ShowingAll(VideoStore *Movie)
{
    cout<<"-------------------------------------------------------------------------------"<<endl
        <<setw(15)<<"Название"<<Movie->MovieName        <<endl
        <<setw(15)<<"Режиссер"<<Movie->Director         <<endl
        <<setw(15)<<"Жанр"<<Movie->Genre                <<endl
        <<setw(15)<<"Рейтинг"<<Movie->PopularityRating   <<endl
        <<setw(15)<<"Цена диска"<<Movie->PriceROM      <<endl;
}
void SearchByName(VideoStore *Movie)
{
    char Name[50];
    cout<<"Введите название фильма"<<endl;
    cin>>Name;
    for(int i=0;i<size;i++)
        //if(strcmp(Movie[i].MovieName,Name)==0) //сравнивается все слово
        if(Name[0]==Movie[i].MovieName[0]&&Name[1]==Movie[i].MovieName[1]&&Name[2]==Movie[i].MovieName[2]) //поиск по первым 3 буквам
            ShowingAll(&Movie[i]);
}
void SearchByGenre(VideoStore *Movie)
{
    char Name[50];
    int u;
    cout<<"Введите жанр фильма"<<endl          //сруским языком возникли проблемы цикл зависает
        <<"1. Ужасы"<<endl
        <<"2. Боевик"<<endl
        <<"3. Фэнтези"<<endl
        <<"4. Триллер"<<endl
        <<"5. Комедия"<<endl
        <<"6. Приключения"<<endl
        <<"7. Фантастика"<<endl;
    cin>>u;
    switch(u)
    {
        case 1: strcpy(Name,"Ужасы"); break;
        case 2: strcpy(Name,"Боевик"); break;
        case 3: strcpy(Name,"Фэнтези"); break;
        case 4: strcpy(Name,"Триллер"); break;
        case 5: strcpy(Name,"Комедия"); break;
        case 6: strcpy(Name,"Приключения"); break;
        case 7: strcpy(Name,"Фантастика"); break;
    }
    for(int i=0;i<size;i++)
        if(strcmp(Movie[i].Genre,Name)==0)
            ShowingAll(&Movie[i]);
}
void SearchByDirector(VideoStore *Movie)          //НЕ РАБОТАЕТ С Русским языком :(
{
    char Name[50];
    cout<<"Введите режиссера"<<endl;
    cin>>Name;
    for(int i=0;i<size;i++)
        if(Name[0]==Movie[i].Director[0]&&Name[1]==Movie[i].Director[1]&&Name[2]==Movie[i].Director[2])
            ShowingAll(&Movie[i]);
}
//ОСТАЛОСЬ Поиск по режиссеру  И   Самый популярный фильм в жанре
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2011, 20:54
Ответы с готовыми решениями:

Как реализовать ввод/вывод текста на русском языке?
Вечер добрый, друзья. Вот только что зарегистрировался, т.к. уже нет сил бороться с одной проблемой. Перерыл весь cyberforum, но так и не...

как реализовать в консоле
скажите как это реализовать в консоле

Как реализовать движение в консоле
Реализовать движение двух фигур по горизонтали по встречным направлениям используя ООП.

14
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
06.04.2011, 21:21
А проблемам в чем??
Кстати я бы на твоем месте использовал бы базу данных (например файл).
1
1 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
06.04.2011, 21:39  [ТС]
Цитата Сообщение от Overmind024 Посмотреть сообщение
А проблемам в чем??
Кстати я бы на твоем месте использовал бы базу данных (например файл).
не проходили еще такое, в функциях не проверяется Name если он был введен на русском, цикл зависает и не выводит фильм с тем именем режиссера которое было введено, конечно я бы мог перевести все имена и названия на английский но мне такой вариант решения не подходит
0
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
06.04.2011, 21:44
В общем смотри. Твоя прога не может найти потому что введенный с клавиатуры русский текст и через код хранится по разному. Файл хороший способ это исправить!
1
 Аватар для Fafle
34 / 34 / 9
Регистрация: 19.03.2010
Сообщений: 136
06.04.2011, 21:46
Sylvos, А ты в каком шаге учишься?
1
1 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
06.04.2011, 21:50  [ТС]
Цитата Сообщение от Fafle Посмотреть сообщение
Sylvos, А ты в каком шаге учишься?
Николаев

Добавлено через 1 минуту
Цитата Сообщение от Overmind024 Посмотреть сообщение
В общем смотри. Твоя прога не может найти потому что введенный с клавиатуры русский текст и через код хранится по разному. Файл хороший способ это исправить!
та не учили мы еще работу с файлами я не знаю как это реализовать
0
06.04.2011, 23:43

Не по теме:

А вам обязательно на руссише? Над нами так не измываются :)

1
1 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
07.04.2011, 00:01  [ТС]
Цитата Сообщение от Fafle Посмотреть сообщение

Не по теме:

А вам обязательно на руссише? Над нами так не измываются :)

из принципа захотелось сделать на русском

Все я разобрался там разница по коду если перевести в инт 64 я просто в каждом условии дописал +64
C++
1
2
3
for(int i=0;i<size;i++)
        if((int)Name[0]+64==(int)Movie[i].Director[0]&&(int)Name[1]+64==(int)Movie[i].Director[1]&&(int)Name[2]+64==(int)Movie[i].Director[2])
            ShowingAll(&Movie[i]);
0
07.04.2011, 00:42

Не по теме:

Вам препод дополнительную домашку дает?

0
1 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
07.04.2011, 01:08  [ТС]

Не по теме:

Нет, это обычное задание



Добавлено через 16 минут
Цитата Сообщение от Sylvos Посмотреть сообщение
из принципа захотелось сделать на русском

Все я разобрался там разница по коду если перевести в инт 64 я просто в каждом условии дописал +64
C++
1
2
3
for(int i=0;i<size;i++)
        if((int)Name[0]+64==(int)Movie[i].Director[0]&&(int)Name[1]+64==(int)Movie[i].Director[1]&&(int)Name[2]+64==(int)Movie[i].Director[2])
            ShowingAll(&Movie[i]);
не не работает, у половины символов коды не совпадают ;(
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.04.2011, 01:32
заменить все char на wchar_t
1
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 12
Записей в блоге: 1
01.06.2012, 22:51
Вообще код зацикливается на поисках фильмов, жанров. Скорее всего из-за того, что некорректно введено сравнение в поиске. Мне кажется возможно луучше сравнивать как строки введеное название через gets, а не через cin >>. И переделать функции поиска
0
1 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
01.06.2012, 22:56  [ТС]
не актуально
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 12
Записей в блоге: 1
02.06.2012, 00:27
и в чем была ошибка?
0
0 / 0 / 0
Регистрация: 05.11.2016
Сообщений: 21
09.05.2017, 19:13
Дело в том что программа должна выводить в 6 пункте в ответе только те задачи которые будут в этом месяце, а она выводит все имеющиеся задачи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.05.2017, 19:13
Помогаю со студенческими работами здесь

Как реализовать поиск
Подскажите пожалуйста, как реализовать поиск по таким данным &lt;?php if(get_post_meta($post-&gt;ID, 'wtf_location', true) != '') {...

Как реализовать поиск по БД?
есть на странице поле для ввода текста и кнопка submit,в поле вводим(например) имя товара ну и должен происходить поиск по имени,и выводить...

Полнотекстовый поиск на русском
Доброго времени суток уважаемые знатоки! Есть такая задача - в базе марок автомобилей и их переводов-синонимов искать совпадения с неким...

Как реализовать поиск в таблице
Помогите есть таблица с кодом товара (Код товара текстовый) когда пользователь водит в форме код с начала база должна проверить есть ли...

Как реализовать сложный поиск в бд?
Создал клиентское приложение - подключил к базе данных Access. Хочу реализовать поиск по нескольким полям (6-7 полей, одни из них числовые,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru