Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
BoOMka
0 / 0 / 1
Регистрация: 20.03.2015
Сообщений: 48
1

Использование контейнера set для создания словаря

22.03.2015, 01:06. Просмотров 917. Ответов 2
Метки нет (Все метки)

Всем привет. Прошу помощи с программой. Само задание:
Написать программу «Англо - русский и русско - английский словарь».
«База данных» словаря должна содержать синонимичные варианты перевода слов.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из
следующих функций :
Загрузка «базы данных» словаря(из файла).
Выбор режима работы :
- англо - русский;
- русско - английский.
Вывод вариантов перевода заданного английского слова.
Вывод вариантов перевода заданного русского слова.
Базу данных словаря реализовать в виде двух контейнеров типа set.
Нашёл кучу вариантов программ. Сделал одну из более удачного варианта. Есть проблемы: 1. Не выводит из файла русское слово после добавление(т.е. выводит символы не кирилические); 2. Не знаю как правильнее переделать из map в set.
Непосредственно код:
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
#include <string>
#include <map>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <Windows.h>
#include <locale>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int q = 0;
    while (q != 3)
    {
        cout << "Выбирите ваше действие: \n" <<
            "1. Добавление слова/Выход из ввода \n" <<
            "2. Поиск слова для перевода/Выход из поиска" <<
            "3. Выход из программы" << endl;
    cin >> q;
        switch (q)
        {
        case 1:
        {
            int i;
            char rus[300];
            char eng[300];
            std::ofstream cout("slovar.txt", std::ios::app);
            do
            {
                std::cout << "Для нового ввода нажмите 1, для выхода 0:\n> ", std::cin >> i;
                fflush(stdin);
                if (!i)
                    break;
                std::cout << "Введите слово на русском:\n> ", std::cin.getline(rus, 300);
                std::cout << "Введите слово на английском:\n> ", std::cin.getline(eng, 300);
                cout << '\n' << eng << ' ' << rus;
            } while (i);
            break;
        }
 
        case 2:
        {
            ifstream in("slovar.txt");
            string s1, s2;
            map<string, string> slovar;
            while (in >> s1 >> s2)
            {
                transform(s1.begin(), s1.end(), s1.begin(), tolower); //перевод в нижний регистр
                transform(s2.begin(), s2.end(), s2.begin(), tolower);
                slovar[s1] = s2;
                slovar[s2] = s1;
            }
            in.close();
            while (1)
            {
                cout << "Введите слово на английском или на русском которое хотите перевести, или exit чтобы выйти: ";
                cin >> s1;
                transform(s1.begin(), s1.end(), s1.begin(), tolower);
                if (s1 == "exit") break;
                if (slovar.find(s1) != slovar.end())
                    cout << "Перевод слова: "<< slovar[s1] << endl;
                else cout << "В словаре этого слова не найдено" << endl;
            }
        }
        }
    }
}
Прогу пишу в VS 2013 Ultimate. Помогите, кто может
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2015, 01:06
Ответы с готовыми решениями:

Свой компаратор для контейнера set
Здравствуйте! Код следующий (комменты): #include &lt;stdlib.h&gt; #include...

Программа для создания словаря
Словарь представляет из себя любые слова и их ID.Я сделал класс Dictionary и...

Совет для создания словаря в виде дерева, на каждом уровне которого располагается буква
Здравствуйте, у меня есть задание - написать англо-русский словарь. Если бы...

Итератор контейнера set
Здравствуйте! Каким образом можно изменить значение итератора set на n (кроме...

Использование lower_bound для set
У меня вопрос у использованию lower_bound на set. Допустим: set &lt;int&gt; s;...

2
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
22.03.2015, 09:39 2
После 34-й строки и прочих, где есть ввод русского текста, делать
C++
1
OemToChar(rus, rus);
Если использовать 2 раздельных set, как потом соответствие устанавливать?
0
zss
Модератор
Эксперт С++
7250 / 6699 / 4240
Регистрация: 18.12.2011
Сообщений: 17,680
Завершенные тесты: 1
22.03.2015, 09:44 3
Цитата Сообщение от BoOMka Посмотреть сообщение
map<string, string> slovar;
Логичнее было бы использовать multimap, чтобы учесть возможную многозначность перевода.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2015, 09:44

Сравнить два контейнера set
Всем добрый вечер . Как сравнить два контейнера set? Допустим: set...

Объединить два контейнера set
У меня есть два сета, их надо как то обьеденить в один сет. Как это сделать?...

Передача контейнера set в функцию
Всем здравствуйте! Мне нужно написать функцию которая будет выводить всю...


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

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

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