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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
#1

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

06.04.2011, 20:54. Просмотров 1856. Ответов 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]);
}
//ОСТАЛОСЬ Поиск по режиссеру  И   Самый популярный фильм в жанре
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2011, 20:54     C++ Как реализовать поиск на Русском в консоле
Посмотрите здесь:
C++ Как реализовать ввод/вывод текста на русском языке?
Как реализовать поиск по файлу с записями о работниках цеха? C++
Как правильно реализовать поиск количества заданого символа C++
C++ Как реализовать поиск значения,которое находится в стеке?
C++ Как сделать структуру (как в таблице) выводимых в консоле данных?
C++ Как реализовать поиск минимального и максимального элемента в двух объектах класса сразу??
Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
06.04.2011, 21:21     C++ Как реализовать поиск на Русском в консоле #2
А проблемам в чем??
Кстати я бы на твоем месте использовал бы базу данных (например файл).
Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
06.04.2011, 21:39  [ТС]     C++ Как реализовать поиск на Русском в консоле #3
Цитата Сообщение от Overmind024 Посмотреть сообщение
А проблемам в чем??
Кстати я бы на твоем месте использовал бы базу данных (например файл).
не проходили еще такое, в функциях не проверяется Name если он был введен на русском, цикл зависает и не выводит фильм с тем именем режиссера которое было введено, конечно я бы мог перевести все имена и названия на английский но мне такой вариант решения не подходит
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
06.04.2011, 21:44     C++ Как реализовать поиск на Русском в консоле #4
В общем смотри. Твоя прога не может найти потому что введенный с клавиатуры русский текст и через код хранится по разному. Файл хороший способ это исправить!
Fafle
34 / 34 / 4
Регистрация: 19.03.2010
Сообщений: 136
06.04.2011, 21:46     C++ Как реализовать поиск на Русском в консоле #5
Sylvos, А ты в каком шаге учишься?
Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
06.04.2011, 21:50  [ТС]     C++ Как реализовать поиск на Русском в консоле #6
Цитата Сообщение от Fafle Посмотреть сообщение
Sylvos, А ты в каком шаге учишься?
Николаев

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

Не по теме:

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

Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
07.04.2011, 00:01  [ТС]     C++ Как реализовать поиск на Русском в консоле #8
Цитата Сообщение от 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]);
Fafle
07.04.2011, 00:42
  #9

Не по теме:

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

Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
07.04.2011, 01:08  [ТС]     C++ Как реализовать поиск на Русском в консоле #10

Не по теме:

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



Добавлено через 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]);
не не работает, у половины символов коды не совпадают ;(
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.04.2011, 01:32     C++ Как реализовать поиск на Русском в консоле #11
заменить все char на wchar_t
Gremkiev
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 12
Записей в блоге: 1
01.06.2012, 22:51     C++ Как реализовать поиск на Русском в консоле #12
Вообще код зацикливается на поисках фильмов, жанров. Скорее всего из-за того, что некорректно введено сравнение в поиске. Мне кажется возможно луучше сравнивать как строки введеное название через gets, а не через cin >>. И переделать функции поиска
Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
01.06.2012, 22:56  [ТС]     C++ Как реализовать поиск на Русском в консоле #13
не актуально
Gremkiev
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 12
Записей в блоге: 1
02.06.2012, 00:27     C++ Как реализовать поиск на Русском в консоле #14
и в чем была ошибка?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2017, 19:13     C++ Как реализовать поиск на Русском в консоле
Еще ссылки по теме:
C++ Как добиться 40 миллисекунд в консоле?
Как сделать управляемый элемент в консоле C++
C++ Как установить в консоле UTF - 8? | Windows console
Как реализовать в массиве поиск 2 х максимальных, второе эквивалентно первому или меньше первого мой код нероб C++
C++ Как в консоли на C++ писать на русском

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

Или воспользуйтесь поиском по форуму:
Jokes123
0 / 0 / 0
Регистрация: 05.11.2016
Сообщений: 16
09.05.2017, 19:13     C++ Как реализовать поиск на Русском в консоле #15
Дело в том что программа должна выводить в 6 пункте в ответе только те задачи которые будут в этом месяце, а она выводит все имеющиеся задачи
Yandex
Объявления
09.05.2017, 19:13     C++ Как реализовать поиск на Русском в консоле
Ответ Создать тему
Опции темы

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