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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.66
dimon_91
10 / 10 / 1
Регистрация: 06.05.2009
Сообщений: 34
#1

Русско-английский и англо-русский словарь - C++

06.05.2009, 20:02. Просмотров 7881. Ответов 35
Метки нет (Все метки)

Здравствуйте господа программисты! Мне нужна помощь. В курсовой работе есть задание "Создать проект «Русско-английский и англо-русский словарь», который обеспечивает перевод слов, хранящихся в файле данных." Мой файл данных имеет вид "en_word=ru_word", т.е. в каждой строке содержится английское слово и его перевод. У меня не получается осуществить поиск введенного слова в файле и соответственно вывести перевод.
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
#include "CyrIOS.h"
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
 
FILE *finp;
 
int main()
{
    char *FileName="d:\\dictionary_base.txt";
    finp=fopen(FileName,"r");
    if((fopen(FileName,"r"))==NULL)
        cout<<"Невозможно открыть словарную базу"<<endl;
    else
        cout<<"Словарная база успешно открыта"<<endl;
    cout<<"Введите слово для перевода"<<endl;
    char word[50]={0};
    cin>>word;
    cout<<"Ваше слово "<<word<<endl;
    int n=0;
    int i;
    for(i=0;i<50;i++)
    {
            if(word[i]!=0)
            n++;
    }
    cout<<"Длина слова (в символах) "<<n<<endl;
Что дальше делать не знаю.
Заранее благодарен!
3
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2009, 20:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Русско-английский и англо-русский словарь (C++):

Реализовать русско-английский и англо-русский словарь - C++
Надо было реализовать словарь с русского на англ и наоборот. #include &quot;iostream&quot; #include &quot;string.h&quot; using namespace std; int...

Англо-русский и русско-английский переводчик в одном приложении - C++
Имеется программа-переводчик. Реализован перевод с англ. на русский. Есть ли возможность запихать туда же и с русского на англ.? Сколько не...

Русско-английский словарь. Ввод данных с двух файлов. Вывод результата в файл - C++
Здравствуйте, сама задача: Даны два текстовых файла - в первом расположены русские слова, во втором их англоязычный перевод. Создать...

Англо-русский словарь на С++ - C++
Помогите пожалста. Втупляю, немогу придумать ничего дельного. Разработать класс «Граф» для решения следующей задачи. Задан файл,...

Англо-русский словарь - C++
нужно написать программу &quot;англо-русский и русско-английский словарь&quot; база данных словаря должна содержать синонимичные варианты перевода...

Англо-русский словарь - C++
Прошу вас помочь написать мне программу на Borland C, программа (англо-русский словарь) Вот задание: Поиск информации с помощью...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
07.05.2009, 07:56 #2
Что-то в этом духе
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
#include <iostream.h>
#include <fstream.h>
#inclede <string.h>
 
int main(int argc, char* argv[])
{
   char word[50] = {'\0'}, str[100] = {'\0'};
   char *buf1 = NULL, *buf2 = NULL;
   bool find = false;
   ifstream fileIn;
 
   fileIn.open("dict.txt");
   if (!fileIn.is_open())
   {
      cout << "ÍåâîçìîæГ*Г® îòêðûòü ñëîâГ*Г°Г*ГіГѕ ГЎГ*çó" << endl;
      exit(1);
   }
   cout << "ÑëîâГ*Г°Г*Г*Гї ГЎГ*Г§Г* ГіГ±ГЇГҐГёГ*Г® îòêðûòГ*" << endl;
   cout << "Ââåäèòå ñëîâî äëÿ ïåðåâîäГ*" << endl;
   cin.getline(word, 50);
   while (!fileIn.eof())
   {
      fileIn.getline(str, 100);
      buf1 = strtok(str, "=");
      buf2 = strtok(NULL, " ");
      if (buf1 == word)
      {
         cout << word << " = " << buf2 << endl;
         find = true;
         break;
      }
      if (buf2 == word)
      {
         cout << word << " = " << buf1 << endl;
         find = true;
         break;
      }
 
   }
   if (!find)
      cout << "ÑîâïГ*äåГ*ГЁГ© Г*ГҐ Г*Г*éäåГ*Г®" << endl;
 
   fileIn.close();
   system("pause");
   return 0;
}
Алгоритм работает, слова разделяет правильно(если слова разделены знаком = без пробелов), но с русским шрифтом проблема.
P.S. Что это за хидер у тебя "CyrIOS.h"?

Добавлено через 38 минут 14 секунд
Да, я так и не понял зачем в словаре длину слова узнавать, но если тебе надо, то воспользуйся функцией strlen(<указатель на строку>).
1
dimon_91
10 / 10 / 1
Регистрация: 06.05.2009
Сообщений: 34
07.05.2009, 10:07  [ТС] #3
Спасибо большое!
"CyrIOS.h" для работы с кириллицей, но для корректной работы нужно в настройках проекта установить значение Character Set на Not Set. А длину слова определил на всякий случай (думал понадобится)
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
07.05.2009, 10:25 #4
А выложить можешь этот хидер - интересно стало.
0
dimon_91
10 / 10 / 1
Регистрация: 06.05.2009
Сообщений: 34
07.05.2009, 13:35  [ТС] #5
Закинь файлы в папку проекта Debug и не забудь указать их в самом проекте.
2
Вложения
Тип файла: rar CyrIOS.rar (2.2 Кб, 207 просмотров)
dimon_91
10 / 10 / 1
Регистрация: 06.05.2009
Сообщений: 34
07.05.2009, 14:24  [ТС] #6
kazak, не могли бы вы объяснить, что нужно делать. Ваш код вроде бы рабочий, но какое слово я бы не ввёл, программа выдаёт сообщение "Совпадений не найдено". Например, первой же строкой в файле dict.txt у меня идёт "dog=пёс". Набираю слово "dog" выводит "Совпадений не найдено". В чём причина?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
07.05.2009, 14:31 #7
Блин, не доглядел при сравнении указатели надо разименовывать
C++
1
2
3
if (*buf1 == *word)
и
if (*buf2 == *word)
1
dimon_91
10 / 10 / 1
Регистрация: 06.05.2009
Сообщений: 34
07.05.2009, 14:38  [ТС] #8
Огромное спасибо! Вы мне очень помогли!
0
ka4ok73
1 / 1 / 0
Регистрация: 22.03.2010
Сообщений: 18
22.03.2010, 18:06 #9
Dimon 91 Можешь скинуть свою курсовую, а то у меня такая же проблема, задали курсовую по этой же теме, а сделать надо за неделю, никак не успею. Если не трудно конечно.
0
Kostek
4 / 4 / 0
Регистрация: 04.02.2009
Сообщений: 79
30.12.2010, 20:23 #10
dimon_91, есть просьба, можешь скинуть базу словаря, если она в текстовом файле? (konstantyn[собачка]bk.ru)

Добавлено через 5 минут
Может есть у кого-нибудь вышеупомянутая база слов для англо-русского словаря в текстовом формате?
Буду очень признателен.

Добавлено через 15 часов 28 минут
вскрыл с десяток мобильных словарей, но там в большинстве случаев мало того что база разбита на десятки файлов, так еще в такой сложной форме написано, что алгоритм сопоставления слов я так и не вкурил ((
0
dimon_91
10 / 10 / 1
Регистрация: 06.05.2009
Сообщений: 34
30.12.2010, 22:36  [ТС] #11
Словарной базы как таковой у меня нет. Для демонстрации работы программы был составлен лишь текстовый файл с десятком слов и их переводами, т.к. передо мной стояла задача разработки алгоритма, а не создания готового программного продукта (бОльшего на первом курсе не требовалось ).
0
KoIIIeY
163 / 163 / 4
Регистрация: 08.01.2011
Сообщений: 850
08.01.2011, 13:50 #12
Народ, пытаюсь сделать перевод в обе стороны, но ответ всегда только один. Кто нибудь эту проблему решал?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
08.01.2011, 14:39 #13
Ну корявый вариант был дан выше.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
08.01.2011, 14:51 #14
Ну по сути тут проще всего через map как я понимаю...
Хотя не факт. Мап же сортирует.
0
KoIIIeY
163 / 163 / 4
Регистрация: 08.01.2011
Сообщений: 850
08.01.2011, 15:07 #15
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
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <windows.h>
 
char bufRus[256];
 
char* rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
 
int main(int argc, char* argv[])
{
   char word[50] = {'\0'}, str[100] = {'\0'};
   char *buf1 = NULL, *buf2 = NULL;
   bool find = false;
   ifstream fileIn;
 
   fileIn.open("dict.txt");
   if (!fileIn.is_open())
   {
      cout << rus("ГЃГ*çû Г*ГҐГІ") << endl;
      exit(1);
   }
   cout << rus("ГЃГ*Г§Г* îòêðûòГ*") << endl;
   cout << rus("Ââåäèòå ñëîâî") << endl;
   cin.getline(word, 50);
   
   while (!fileIn.eof())
   {
      fileIn.getline(str, 100);
      buf1 = strtok(str, "=");
      buf2 = strtok(NULL, " ");
      buf1 = rus(buf1);
      if (*buf1 == *word && strlen(buf1) == strlen(word))
      {
 
         cout << word << " = " << rus(buf2) << endl;
         find = true;
         break;
      }
      if (*buf2 == *word && strlen(buf2) == strlen(word))
      {
         cout << word << " = " << buf1 << endl;
         find = true;
         break;
      }
   }
   if (!find)
      cout << rus("ÑîâïГ*äåГ*ГЁГ© Г*ГҐ Г*Г*éäåГ*Г®") << endl;
 
   fileIn.close();
   system("pause");
   return 0;
}
вот, работает русский, переводит в обе стороны.
Всем спасибо


Вообще-то я веб-программер, по этому не судите строго если что не так.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2011, 15:07
Привет! Вот еще темы с ответами:

Класс «англо – русский словарь» - C++
Определите класс «англо – русский словарь». Словарь состоит из различных слов английского языка, упорядоченных по алфавиту. Прописные и...

Курсовая работа на тему англо-русский словарь - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;clocale&gt; #include &lt;stdlib.h&gt; #include &lt;locale&gt; int...

Англо-русский словарь построен как двоичное дерево. - C++
Всем привет! Помогите пожалуйста с написанием программы:cry: Очень прошу:gcray: Англо-русский словарь построен как двоичное дерево. ...

Разобраться в некоректности программы!(англо-русский словарь лин. списком) - C++
Здравствуйте,помогите пожалуйста с программой,требуется написать программу для русско-английского словаря,читать слова из текстового файла...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.01.2011, 15:07
Ответ Создать тему
Опции темы

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