0 / 0 / 1
Регистрация: 20.03.2015
Сообщений: 48
1

Multimap STL - работает только запись в файл, поиск в файле не работает

24.03.2015, 22:33. Показов 1810. Ответов 3
Метки нет (Все метки)

И снова здравствуйте. Снова я прошу вашей помощи. Переделал программу с мапом в мульти мап, но что то пошло не так и работает только запись в файл. Поиск в файле не работает. Помогите пожалуйста(первый и второй кейсы)
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
#include <string>   // это тип данных для ввода строковых данных.
#include <map>      //позволяет нам хранить эти данные в виде ключ-значение
#include <iostream> //Библиотека потокового ввода-вывода
#include <fstream>  //для чтения/записи данных из/в файл
#include <algorithm>    //позволяют сортировать данные в массиве, искать в нем какое-либо значение, менять элементы местами и т.д
#include <Windows.h>    //библиотека для работы SetConsole
#include <iomanip>
using namespace std;
 
typedef string N1;                  //  тип  ключа
typedef string N2;                  //  тип  элемента
typedef multimap<string, string, less<string> > sl;
N1 key;
N2 m;
 
int main()
{
    SetConsoleCP(1251); //функция для ввода русского языка
    SetConsoleOutputCP(1251);
    sl::iterator itr;
    sl::value_type pr;
    string k;
    key = k;
    sl slovar;
    int q = 0;
    int p = 0;
    int t = 0;
    while (q != 3)
    {
        system("cls"); //очистка консоли
        cout << "Выбирите ваше действие: \n"
            << "1. Режим Англо-Русского словаря. \n"
            << "2. Режим Русско-Английского словаря. \n"
            << "3. Выход из программы." << endl;                //вывод меню
        cin >> q;//выбор пункта меню
        switch (q)
        {
        case 1://кейс (Англо-Русский)
        {
            system("cls"); //очистка консоли
 
            while (p != 3)
            {
                system("cls"); //очистка консоли
                cout << "Выбран Англо-Русский словарь. Какие действия хотите провести?: \n"
                    << "1. Добавить слова в словарь/Выйти из заполнения словаря; \n"
                    << "2. Поиск слов для перевода/Выити из поиска; \n"
                    << "3. Завершить использование словаря." << endl;              //вывод меню
                cin >> p;//выбор пункта меню
                switch (p)
                {
                case 1:// кейс Добавления в Англо-Русский словарь.
                {
                    system("cls"); //очистка консоли
                    int i;
 
                    std::ofstream file("slovar_en-ru.txt", std::ios::app);//  для вывода (записи) данных в файл
 
                    do
                    {
                        system("cls"); //очистка консоли
                        std::cout << "Для нового ввода нажмите 1, для выхода 0:\n> ", std::cin >> i;//подтверждение добавления или выход
                        fflush(stdin);
                        if (!i)
                            break;
                        std::cout << "Введите слово на английском:\n> ";
                        cin >> k;
                        std::cout << "Введите слово на русском:\n> ";
                        cin >> m;
                        std::cout << "\n";
                        file << k << "\t" << m << "\n";
                    } while (i);
                    file.close();
                }
                break;
                case 2:// кейс поиска перевода анг слов
                {
                    system("cls"); //очистка консоли
                    ifstream file("slovar_en-ru.txt");
                    while (file >> k >> m)
                    {
                        while (1)
                        {
                            cout << "Введите слово на английском которое хотите перевести, или exit чтобы выйти: \n";
                            cin >> k;
                            if (k == "exit") break;
                            if (slovar.find(m) != slovar.end())
                            {
                                cout << "Перевод слова: \n";
                                cout << slovar.find(m)->first << endl;
                            }
                            else cout << "В словаре этого слова не найдено" << endl;
                        }
                    }
                    file.close();
                }
                break;
                case 3://Завершить использование словаря.
                {
                    p = 3;
                }
                break;
                }
            }
        }
        break;
        case 2://кейс (Русско-Английский)
        {
            system("cls"); //очистка консоли
            int i;
            while (t != 3)
            {
                system("cls");//очистка консоли
                cout << "Выбран Русско-Английский словарь. Какие действия хотите провести?: \n"
                    << "1. Добавить слова в словарь/Выйти из заполнения словаря; \n"
                    << "2. Поиск слов для перевода/Выити из поиска; \n"
                    << "3. Завершить использование словаря." << endl;              //вывод меню
                cin >> t;//выбор пункта меню
                switch (t)
                {
                case 1:// кейс Добавления в Русско-Английский словарь.
                {
 
                    system("cls"); //очистка консоли
                    std::ofstream cout("slovar_ru-en.txt", std::ios::app);//  для вывода (записи) данных в файл
                    do
                    {
                        system("cls"); //очистка консоли
                        std::cout << "Для нового ввода нажмите 1, для выхода 0:\n> ", std::cin >> i;//подтверждение добавления или выход
                        fflush(stdin);
                        if (!i)
                            break;
                        system("cls"); //очистка консоли
 
                    } while (i);
                }
                break;
                case 2:// кейс поиска перевода рус слов
                {
                    system("cls"); //очистка консоли
                }
                break;
                case 3://Завершить использование словаря.
                {
                    t = 3;
                }
                break;
                }
            }
            break;
        case 3: //Выход из программы.
        {
            q = 3;
        }
        break;
        default:
            cout << "Нужно выбрать пункт меню." << endl;
            system("pause");
        }
 
        }
    }
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2015, 22:33
Ответы с готовыми решениями:

STL, не работает multimap::equal_range()
изучаю STL, работаю с multimap: typedef multimap&lt;string, string&gt; str_mmap; str_mmap test_mmap;...

Не работает поиск в текстовом файле
Я хочу чтобы данные которые я ввожу , записывались в файл с пробелами и считывались на экран(так же...

Не работает поиск в файле (ifstream)
Всегда выдает &quot;No&quot; и return -1; Возможно кто-то знает альтернативную реализацию. #include...

Не работает поиск в файле слова
Просто слово &quot;one&quot; находит, но если изменить строку на &quot;one 1&quot;, то слово one уже не находится....

3
Форумчанин
Эксперт CЭксперт С++
8193 / 5043 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.03.2015, 23:27 2
А если случаи из case переделать на функции?
А то тут даже не понятно, в котором по уровню вложенности case смотреть проблему.
0
0 / 0 / 1
Регистрация: 20.03.2015
Сообщений: 48
24.03.2015, 23:30  [ТС] 3
Ну можно и так. Просто я делал менюшку и сделал её по принципу меню в меню. По этому там в 1 кейсе и 2 кейсе от первого меню вложены ещё по 3 кейса)
0
7275 / 6220 / 2833
Регистрация: 14.04.2014
Сообщений: 26,871
31.03.2015, 23:06 4
А где заполнение словаря? Что там ищется, если ничего не добавлялось?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2015, 23:06
Помогаю со студенческими работами здесь

Не работает программа поиск в файле
Почему не работает программа пишет ошибку Unit1.cpp(47): E2034 Cannot convert 'char' to 'char...

Чтение файлов, запись и дозапись в файл, поиск файлов в каталоге и поиск данных в файле
2. Создать файлы, в которых будут вмещаться строки с именами студентов и их средними балами. Каждый...

STL multimap.
#include &quot;stdafx.h&quot; #include &lt;map&gt; #include &lt;algorithm&gt; #include &lt;string&gt; #include...

Почему не работает поиск цифр в файле
Здравствуйте, Есть задача, где цифры подаются вот так _ | | |_| (Это 0) Так вот, для...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru