Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 4
1

Написать программу словарь-переводчик

22.12.2015, 18:00. Просмотров 5221. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста, всё уже облазил.
Мне нужно создать программу типа словарь, если вводишь английское слово, нужно чтобы оно его искало в словаре ( формат txt) и выдавало перевод.
словарь создал свой из трёх слов, идея такая ищет слово построчно, если слово совпало то выводит всю строку с ним ( как догадались на этой строке есть и перевод)
help!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2015, 18:00
Ответы с готовыми решениями:

Словарь-Переводчик. вывод в textBox
Вроде всё компилируется нормально, но выводить не хочет, помогите разобраться в чём ошибка, заранее...

Написать программу, которая составляет словарь терминов
Написать программу, которая составляет словарь терминов. Термины должны быть отсортированы по...

Курсовая - переводчик (словарь) на С++
Доброго времени суток! Меня зовут Алексей, я студент 2го курса колледжа по специальности...

Словарь-переводчик. вывод в textBox
Вроде всё компилируется нормально, но выводить не хочет, помогите разобраться в чём ошибка, заранее...

11
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
22.12.2015, 18:25 2
Идея есть. Что не получается?
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 4
22.12.2015, 19:01  [ТС] 3
Знаний не хватает, не могу реализовать
0
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
22.12.2015, 20:07 4
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
string w, s;
 
cin >> w;
 
ifstream ifs("data.txt");
while (ifs >> s)
    if (s == w)
    {
        getline(ifs, s);
        cout << s << endl;
        break;
    }
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 4
22.12.2015, 20:20  [ТС] 5
и всё чтоле?
0
1180 / 701 / 164
Регистрация: 05.12.2015
Сообщений: 2,020
22.12.2015, 20:44 6
В конце while нужен getline
0
Хитрая блондиночка $)
1460 / 974 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
22.12.2015, 20:48 7
Хм... А я бы поправила б:
C++
1
2
3
while (ifs >> s)
    if (s.substr(w.length()) == w)
...
А так вполне пригодно.
0
1180 / 701 / 164
Регистрация: 05.12.2015
Сообщений: 2,020
22.12.2015, 20:54 8
Цитата Сообщение от Hikari Посмотреть сообщение
if (s.substr(w.length()) == w)
Нет условия, что словарь отсортирован.
В словаре два слова: barrel и bar пользователь вводит bar...
C++
1
2
3
4
5
6
7
8
9
while (ifs >> s) {
    if (s == w)
    {
        getline(ifs, s);
        cout << s << endl;
        break;
    }
    getline(ifs, s);
}
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 4
22.12.2015, 20:57  [ТС] 9
всё правильно сделал?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
string w, s;
 
cin >> w;
 
ifstream ifs("C:\1.txt");
while (ifs >> s)
    if (s.substr(w.length()) == w)
    {
        getline(ifs, s);
        cout << s << endl;
        break;
    }
     return 0;
     
}
0
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
22.12.2015, 21:59 10
Ты не пишешь о структуре словаря. Я предполагаю простейший вариант: в каждой строке английское слово, а после любой комментарий. Зачем substr()?
0
Эксперт С++
3204 / 1731 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
22.12.2015, 22:21 11
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
#include <algorithm>
#include <fstream>
#include <iostream>
#include <map>
#include <string>
#include <windows.h> 
///////////////////////////////////////////////////////////////////////////////
typedef std::string                             T_str;
typedef std::map        < T_str,    T_str   >   T_rus_of_eng;
///////////////////////////////////////////////////////////////////////////////
class   T_eng_rus_dictionary
{
    //-------------------------------------------------------------------------
    T_rus_of_eng    rus_of_eng_;
    //-------------------------------------------------------------------------
public:
    //-------------------------------------------------------------------------
    void    add_eng_word_and_rus_translation
        (
            T_str   eng,
            T_str   rus
        )
    {
        rus_of_eng_[ eng ]  =   rus;
    }
    //-------------------------------------------------------------------------
    void    print_rus_translation( T_str    const   &   eng )
    {
        auto    it  =   rus_of_eng_.find( eng );
 
        std::cout   <<  (
                            it  ==    rus_of_eng_.end()
                                ?   "Нет перевода в словаре."
                                :    it->second
                        )
 
                    <<  std::endl;
    }
    //-------------------------------------------------------------------------
    friend
    std::ostream    &   operator<<
        (
            std::ostream                    &   ostr,
            T_eng_rus_dictionary    const   &   eng_rus_dict
        )
    {
        std::for_each
            (
                eng_rus_dict.rus_of_eng_.begin  (),
                eng_rus_dict.rus_of_eng_.end    (),
 
                [&]     ( auto  const   &   eng_and_rus )
                {
                    ostr    <<  eng_and_rus.first
                            <<  '\t'
                            <<  eng_and_rus.second
                            <<  std::endl;
                }
            );
 
        return  ostr;
    }
    //-------------------------------------------------------------------------
    friend
    std::istream    &   operator>>
        (
            std::istream            &   istr,
            T_eng_rus_dictionary    &   eng_rus_dict
        )
    {
        T_str   eng;
        T_str   rus;
 
        while   (
                        ( istr  >>  eng )
                    &&  ( istr  >>  rus )
                )
        {
            eng_rus_dict.add_eng_word_and_rus_translation
                (
                    eng,
                    rus
                );
        }//while
 
        return  istr;
    }
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    SetConsoleCP        (1251);
    SetConsoleOutputCP  (1251);
 
    T_str   const           DICT_FILENAME   =   "d.txt";
    T_eng_rus_dictionary    eng_rus_d;
 
    std::cout   <<  "Заполнение словаря. Введите количество вводимых записей: ";
    int     n   =   0;
    std::cin    >>  n;
 
    for( int  i = 0; i < n; ++i )
    {
        std::cout   <<  "\n#"
                    <<  i + 1
                    <<  ":"
                    <<  std::endl;
 
        std::cout   <<  "\tангл. слово\t: ";
        T_str   eng;
        std::cin    >>  eng;
 
        std::cout   <<  "\tрус. перевод\t: ";
        T_str   rus;
        std::cin    >>  rus;
 
        eng_rus_d.add_eng_word_and_rus_translation
            (
                eng,
                rus
            );
    }//for
    
    std::ofstream   ofile( DICT_FILENAME,   std::ios::app );
    ofile   <<  eng_rus_d;
 
    std::ifstream   ifile( DICT_FILENAME );
    T_eng_rus_dictionary    new_eng_rus_d;
    ifile   >>  new_eng_rus_d;
 
    std::cout   <<  "Вводите английские слова для перевода:"
                <<  std::endl;
 
    for(;;)
    {
        std::cout   <<  "\nАнгл. слово\t: ";
        T_str   eng;
        std::cin    >>  eng;
        new_eng_rus_d.print_rus_translation( eng );
    }//for
}
0
Хитрая блондиночка $)
1460 / 974 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
22.12.2015, 23:06 12
Цитата Сообщение от avgoor Посмотреть сообщение
Нет условия, что словарь отсортирован.
А я думала, что у ТС что-то типа ИНИ структуры
И причем тут сортировка, не пойму?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2015, 23:06

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

Написать переводчик с использованием файла со словами
Доброго времени суток! Решите, пожалуйста, задачку: Каждая строка файла содержит два слова:...

Составить программу-переводчик
Составить программу – перводчик с родного языка на иностранный или наоборот. Переводчик разбивает...

Реализовать программу-переводчик с английского на русский и наоборот
Доброго времени суток! встала проблем с переводчиком. Дело в том, что с английского на русский...

Написать программу переводчик
Подскажите как написать программу переводчик, есть текст (MECTO ZOLHO.4YDOBNW TEZEPJ) как написать...


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

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

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