Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/37: Рейтинг темы: голосов - 37, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
1

Курсовая работа на тему англо-русский словарь

30.04.2012, 23:19. Показов 7657. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <clocale>
#include <stdlib.h>
#include <locale>
 
 
int main()
{
   char word[100];
   char str[100];
   char *buf1 = NULL;
   char *buf2 = NULL;
   bool find = false;
   setlocale(LC_ALL,"Russian");
 
   FILE *fp;
 
   if ((fp = fopen("dict.txt","r"))==NULL) {
   printf("OSHIBKA  PRI OTKRYTYI FAILA.\n");
   exit(1);
   }
 
 
   printf("SLOVARNAYA BASA USPESHNO OTKRYTA \n");
   printf("VVEDITE SLOVO DLYA PEREVODA \n");
   scanf("%s", &word);
 
   while (!feof(fp)) 
   {
       fgets(str, sizeof str, fp);
       buf1 = strtok(str, "=");
       buf2 = strtok(NULL, " ");
 
       if (*buf1 == *word)
           {
            printf("%s = %s" "\n", word, buf2);
            find = true;
            break;
           }
вот сам листинг программы, но при запуске программы выходит как положено сообщение что база данных открыта , что можно вводить слово.. ну вот я слово ввожу после нажатия <enter> у меня просто курсор переходит на другую строчку, но перевод не выводит...подскажите в чем проблема ?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (*buf2 == *word)
       {
           printf("%s = %s" "\n", word, buf1);
           find = true;
           break;
       }
 
   }
   if (!find)
   {
      printf ("SOVPADENII NE NAIDENNO\n");
   }
 
   fclose(fp);
   getch();
   return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2012, 23:19
Ответы с готовыми решениями:

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

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

Англо-русский словарь
Прошу вас помочь написать мне программу на Borland C, программа (англо-русский словарь) Вот...

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

19
Заблокирован
30.04.2012, 23:33 2
Char* strtok возвращает указатель на следующую лексему в строке

Например:

C++
1
2
3
4
char *p;
 
   p = strtok("Травка зеленеет, солнышко блестит", " ");
   printf(p);
Что вернет? Вернет указатель на пробел. Правильно?

Теперь в твоем коде

C++
1
buf1 = strtok(str, "="); //
Что вернет? Указатель на "="
C++
1
 buf2 = strtok(NULL, " "); //
Что вернет? Указатель на " "
C++
1
if (*buf1 == *word) //
А здесь что ты делаешь? Сравниваешь указатель на слово с чем? С указателем на "=" ?

Так он ничего не найдет!!!
2
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
30.04.2012, 23:44  [ТС] 3
получается нужно
C++
1
2
buf1 = strtok(str, "=");
buf2 = strtok(NULL, "=");
Добавлено через 2 минуты
нам нужно указать на слово, но как ? я совсем запуталась..(

Добавлено через 1 минуту
нам нужно указать ан перевод.. но как.. блин я совсем запуталась..

Добавлено через 3 минуты
Цитата Сообщение от IFree Host Посмотреть сообщение
Char* strtok возвращает указатель на следующую лексему в строке

Например:
C++
1
2
3
4
char *p;
 
   p = strtok("Травка зеленеет, солнышко блестит", " ");
   printf(p);
Что вернет? Вернет указатель на пробел. Правильно?

Теперь в твоем коде

C++
1
buf1 = strtok(str, "="); //
Что вернет? Указатель на "="
C++
1
 buf2 = strtok(NULL, " "); //
Что вернет? Указатель на " "
C++
1
if (*buf1 == *word) //
А здесь что ты делаешь? Сравниваешь указатель на слово с чем? С указателем на "=" ?

Так он ничего не найдет!!!
C++
1
2
buf1 = strtok(str, "=word");
buf2 = strtok(NULL, " word");
так получается? я немного запуталась.. (
0
Заблокирован
30.04.2012, 23:45 4
buf1 = strtok(str, слово нужно здесь проверять);

Но, вообще нужно воспользоваться вот этим

int i = strcmp(word1, word2); Сравнивает строки на идентичность

если i==1 то совпало, если 0 то нет
1
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
30.04.2012, 23:48 5
если вам на с++ надо проще контейнером map воспользоваться
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
30.04.2012, 23:51  [ТС] 6
Цитата Сообщение от IFree Host Посмотреть сообщение
buf1 = strtok(str, слово нужно здесь проверять);

Но, вообще нужно воспользоваться вот этим

int i = strcmp(word1, word2); Сравнивает строки на идентичность

если i==1 то совпало, если 0 то нет
int main(int i = strcmp(wort1,wort2));вот так ? а как слово проверить ?
0
Заблокирован
30.04.2012, 23:59 7
Нет, нет!!! Что ты!!! Это совсем плохо будет!!!

int strcmp ( const char * str1, const char * str2 ); получает два стринга

значит, нужно в итоге получить следующий код:

C++
1
2
3
4
5
6
7
8
#include <String>
string* searchedWord;
string* foundWord;
 
...
...
...
if(strcmp(const char * str1, const char * str2)) printf("К слову %s найден следующий перевод: %s", *searchedWord, *foundWord);
Все эти функции которые ты используешь работают с const char а значит со стрингами.
поэтому удобнее всего сразу с них и начинать, а не мучиться с массивами
2
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
01.05.2012, 00:09  [ТС] 8
Цитата Сообщение от IFree Host Посмотреть сообщение
Нет, нет!!! Что ты!!! Это совсем плохо будет!!!

int strcmp ( const char * str1, const char * str2 ); получает два стринга

значит, нужно в итоге получить следующий код:

C++
1
2
3
4
5
6
7
8
#include <String>
string* searchedWord;
string* foundWord;
 
...
...
...
if(strcmp(const char * str1, const char * str2)) printf("К слову %s найден следующий перевод: %s", *searchedWord, *foundWord);
Все эти функции которые ты используешь работают с const char а значит со стрингами.
поэтому удобнее всего сразу с них и начинать, а не мучиться с массивами
у меня голова уже кругом, извините , что все не доходит .. получается код программы координально изменится.. он значит будет выглядеть так ?
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <clocale>
#include <stdlib.h>
#include <locale>
string* searchedWord;
string* foundWord;
 
int strcmp ( const char * str1, const char * str2 );
{
   
   char *buf1 = NULL;
   char *buf2 = NULL;
   bool find = false;
   setlocale(LC_ALL,"Russian");
 
   FILE *fp;
 
   if(strcmp(const char * str1, const char * str2)) printf("К слову %s найден следующий перевод: %s", *searchedWord, *foundWord);
 
   
   }
 
 
   printf("SLOVARNAYA BASA USPESHNO OTKRYTA \n");
   printf("VVEDITE SLOVO DLYA PEREVODA \n");
   scanf("%s\n", &word);
 
   while (!feof(fp)) 
   {
       fgets(str, sizeof str, fp);
       buf1 = strtok(str,);
       buf2 = strtok(NULL,);
 
       if (i==1)
           {
            printf("%s = %s" "\n", word, buf2);
            find = true;
            break;
           }
 
       if (i==0)
       {
           printf("%s = %s" "\n", word, buf1);
           find = true;
           break;
       }
 
   }
   if (!find)
   {
      printf ("SOVPADENII NE NAIDENNO\n");
   }
 
   fclose(fp);
   getch();
   return 0;
}
только мне кажется я теперь совсем все напутала
0
Заблокирован
01.05.2012, 00:15 9
Нет Ритуша, ты правда запуталась.
Тебе это прямо сегодня надо?

если да, то мне нужен файл с твоим словарем, я тебе напишу правильно.
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
01.05.2012, 00:17  [ТС] 10
Цитата Сообщение от IFree Host Посмотреть сообщение
Нет Ритуша, ты правда запуталась.
Тебе это прямо сегодня надо?

если да, то мне нужен файл с твоим словарем, я тебе напишу правильно.
ну завтра в 12 нужно сдать, ну мне еще пояснительную нужно написать...(( а я уже столько над этим работаю... и чем больше пытаюсь понять, тем больше запутываюсь
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.05.2012, 00:19 11
Цитата Сообщение от rita_0705 Посмотреть сообщение
Все эти функции которые ты используешь работают с const char а значит со стрингами.

IFree Host,почитайте мануалы и не морочте девушке голову

Цитата Сообщение от rita_0705 Посмотреть сообщение
if(strcmp(const char * str1, const char * str2)) printf("К слову %s найден следующий перевод: %s", *searchedWord, *foundWord);
Если строки равны strcmp вернет нуль
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
01.05.2012, 00:20  [ТС] 12
Цитата Сообщение от rita_0705 Посмотреть сообщение
ну завтра в 12 нужно сдать, ну мне еще пояснительную нужно написать...(( а я уже столько над этим работаю... и чем больше пытаюсь понять, тем больше запутываюсь
да там хоть три слова пусть будет в словаре не это важно, а то чтоб вообще считывание с файла происходило
0
Заблокирован
01.05.2012, 02:36 13
Ну вот, это помести в словарь "dict.txt"

C++
1
2
3
word слово
search искать
find найти

А это твой код:

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
#include <stdio.h>
#include <conio.h>
#include <clocale>
#include <stdlib.h>
#include <locale>
 
 
int main()
{
    char word[100];
    char str[100];
 
    char *buf1 = NULL;
 
 
    bool found = false;
    bool translate = false;
 
    setlocale(LC_ALL,"Russian");
 
    FILE *fp;
 
    fp = fopen("dict.txt","r");
 
    if(!fp)
    {
        printf("Error: File not found! \n");
        getchar();
        exit(1);
    }
 
 
    printf("Dictionary is open. \n");
    printf("Pleas put your word to translate: ");
    scanf("%s", &word);
    fflush(stdin);
    printf("\n\n");
 
    while (!feof(fp)) 
    {
        fgets(str, 100, fp);
 
        buf1 = strtok (str," ");
 
        while (buf1 != NULL)
        {
            if(translate) printf(" %s\n", buf1);
 
            if (!strcmp(buf1,word))
            {
                translate = true;
                found = true;
                printf(" %s\n", buf1);  
            }
            buf1 = strtok (NULL, " ");
        }
        translate = false;
        
    }
 
    fclose(fp);
 
    if (!found)
    {
        printf (" No translations found\n");
    }
 
    getchar();
    return 0;
}
Цитата Сообщение от MrCold Посмотреть сообщение
почитайте мануалы и не морочте девушке голову
А ты мне объясни, какая разница между стрингами и чар массивами заканчивающимися на '\0'?
Она вообще есть по твоему?
А const char, это как раз другой профиль тех же помидоров, чтобы ты уж знал!

Цитата Сообщение от MrCold Посмотреть сообщение
string* searchedWord;
string* foundWord;
.....
и что именно тебя здесь не устроило?
Кстати это мне только кажется или я действительно не вижу от тебя тут ни ответа ни кода ни совета. Критиканов как обычно до "не мерено".
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.05.2012, 02:42 14
Цитата Сообщение от IFree Host Посмотреть сообщение
не вижу от тебя тут ни ответа ни кода ни совета
Да действительно ...
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
#include <iostream>
#include <fstream>
#include <string>
#include <clocale>
using namespace std;
 
int main()
{
          setlocale(LC_ALL,"Russian");
          string rusword, findword, engword;
          bool find = false;
          ifstream file("file.txt" );
       if (!file) {
          cerr << "Ошибка открытия файла !!!\n";}
       else{
          cout << "Словарная база успешно открыта\nВведите слово на английском для перевода\n";
          cin >> findword;
       while(file >> engword >> rusword) 
          {
       if  (engword == findword) 
          {
          cout << engword << " - " << rusword;
          find = true;     break;
          }}}
 
          if (!find)
          cout << "Нет совпадений\n";
          cout << endl;
          system("pause");
     return 0;
}
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
01.05.2012, 10:14  [ТС] 15
Цитата Сообщение от IFree Host Посмотреть сообщение
Ну вот, это помести в словарь "dict.txt"

C++
1
2
3
word слово
search искать
find найти

А это твой код:

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
#include <stdio.h>
#include <conio.h>
#include <clocale>
#include <stdlib.h>
#include <locale>
 
 
int main()
{
    char word[100];
    char str[100];
 
    char *buf1 = NULL;
 
 
    bool found = false;
    bool translate = false;
 
    setlocale(LC_ALL,"Russian");
 
    FILE *fp;
 
    fp = fopen("dict.txt","r");
 
    if(!fp)
    {
        printf("Error: File not found! \n");
        getchar();
        exit(1);
    }
 
 
    printf("Dictionary is open. \n");
    printf("Pleas put your word to translate: ");
    scanf("%s", &word);
    fflush(stdin);
    printf("\n\n");
 
    while (!feof(fp)) 
    {
        fgets(str, 100, fp);
 
        buf1 = strtok (str," ");
 
        while (buf1 != NULL)
        {
            if(translate) printf(" %s\n", buf1);
 
            if (!strcmp(buf1,word))
            {
                translate = true;
                found = true;
                printf(" %s\n", buf1);  
            }
            buf1 = strtok (NULL, " ");
        }
        translate = false;
        
    }
 
    fclose(fp);
 
    if (!found)
    {
        printf (" No translations found\n");
    }
 
    getchar();
    return 0;
}


А ты мне объясни, какая разница между стрингами и чар массивами заканчивающимися на '\0'?
Она вообще есть по твоему?
А const char, это как раз другой профиль тех же помидоров, чтобы ты уж знал!


и что именно тебя здесь не устроило?
Кстати это мне только кажется или я действительно не вижу от тебя тут ни ответа ни кода ни совета. Критиканов как обычно до "не мерено".
No translations found- у меня это сообщение только выводит при любом вводимом слове которое есть в файле (
0
Заблокирован
01.05.2012, 11:39 16
А какие слова вводишь? Надо английские. Для поиска русских слов нужен второй словарь в котором русские слова стоят на первом месте а английские на втором
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
01.05.2012, 11:49  [ТС] 17
Цитата Сообщение от IFree Host Посмотреть сообщение
А какие слова вводишь? Надо английские. Для поиска русских слов нужен второй словарь в котором русские слова стоят на первом месте а английские на втором
английские ввожу, а писать так в самом файле номер проблел англ.слово пробел русское слово? а этот сам файл помещать в папку где сама программа или же в саму среду а именнго в bin ( какв паскале )
0
Заблокирован
01.05.2012, 11:51 18
нет!!!!!! никаких номеров не надо!!!!!!
Это просто форматирование на форуме номера отображает, чтобы было сразу видно сколько строк в файле и на какую строку ссылаться в случае ошибки

Просто . английское слово, пробел, русское слово, перевод строки

Помещай туда где сама программа
0
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 124
01.05.2012, 12:19  [ТС] 19
Цитата Сообщение от IFree Host Посмотреть сообщение
нет!!!!!! никаких номеров не надо!!!!!!
Это просто форматирование на форуме номера отображает, чтобы было сразу видно сколько строк в файле и на какую строку ссылаться в случае ошибки

Просто . английское слово, пробел, русское слово, перевод строки

Помещай туда где сама программа
вот я чайник ! извините за предоставленные трудности со мной ! Большое спасибо за помощь!
0
Заблокирован
01.05.2012, 12:21 20
Да никакой ты не чайник, просто - учишся, как и большинство здесь присутствующих. Удачи с курсовой.
0
01.05.2012, 12:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2012, 12:21
Помогаю со студенческими работами здесь

Русско-английский и англо-русский словарь
Здравствуйте господа программисты! Мне нужна помощь. В курсовой работе есть задание &quot;Создать проект...

Двоичное дерево. Англо-русский словарь
Как сделать, чтобы count прибавлялся для одного слова, которое искали, а не для всех сразу. ...

Англо-русский словарь в виде двоичного дерева
Строки 105 и 60, ошибки С4703 и С4700 соответственно. Задача:Каждая компонента содержит английское...

Реализовать русско-английский и англо-русский словарь
Надо было реализовать словарь с русского на англ и наоборот. #include &quot;iostream&quot; #include...

Англо-русский словарь, реализованный через бинарное дерево
Описать класс, реализующий бинарное дерево, обладающее возможностью добавления новых элементов,...

Англо-русский словарь построен в виде двоичного дерева
Англо-русский словарь построен в виде двоичного дерева.Каждая компонента содержит английское...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru