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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
rita_0705
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 125
30.04.2012, 23:19     Курсовая работа на тему англо-русский словарь #1
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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2012, 23:19     Курсовая работа на тему англо-русский словарь
Посмотрите здесь:

Англо-русский словарь на С++ C++
C++ Русско-английский и англо-русский словарь
C++ Англо-русский словарь
C++ Англо-русский словарь построен как двоичное дерево.
C++ [C++] Англо-русский словарь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IFree Host
Заблокирован
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) //
А здесь что ты делаешь? Сравниваешь указатель на слово с чем? С указателем на "=" ?

Так он ничего не найдет!!!
rita_0705
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 125
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");
так получается? я немного запуталась.. (
IFree Host
Заблокирован
30.04.2012, 23:45     Курсовая работа на тему англо-русский словарь #4
buf1 = strtok(str, слово нужно здесь проверять);

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

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

если i==1 то совпало, если 0 то нет
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
30.04.2012, 23:48     Курсовая работа на тему англо-русский словарь #5
если вам на с++ надо проще контейнером map воспользоваться
rita_0705
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 125
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));вот так ? а как слово проверить ?
IFree Host
Заблокирован
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 а значит со стрингами.
поэтому удобнее всего сразу с них и начинать, а не мучиться с массивами
rita_0705
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 125
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;
}
только мне кажется я теперь совсем все напутала
IFree Host
Заблокирован
01.05.2012, 00:15     Курсовая работа на тему англо-русский словарь #9
Нет Ритуша, ты правда запуталась.
Тебе это прямо сегодня надо?

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

если да, то мне нужен файл с твоим словарем, я тебе напишу правильно.
ну завтра в 12 нужно сдать, ну мне еще пояснительную нужно написать...(( а я уже столько над этим работаю... и чем больше пытаюсь понять, тем больше запутываюсь
MrCold
851 / 749 / 71
Регистрация: 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 вернет нуль
rita_0705
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 125
01.05.2012, 00:20  [ТС]     Курсовая работа на тему англо-русский словарь #12
Цитата Сообщение от rita_0705 Посмотреть сообщение
ну завтра в 12 нужно сдать, ну мне еще пояснительную нужно написать...(( а я уже столько над этим работаю... и чем больше пытаюсь понять, тем больше запутываюсь
да там хоть три слова пусть будет в словаре не это важно, а то чтоб вообще считывание с файла происходило
IFree Host
Заблокирован
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;
.....
и что именно тебя здесь не устроило?
Кстати это мне только кажется или я действительно не вижу от тебя тут ни ответа ни кода ни совета. Критиканов как обычно до "не мерено".
MrCold
851 / 749 / 71
Регистрация: 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;
}
rita_0705
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 125
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- у меня это сообщение только выводит при любом вводимом слове которое есть в файле (
IFree Host
Заблокирован
01.05.2012, 11:39     Курсовая работа на тему англо-русский словарь #16
А какие слова вводишь? Надо английские. Для поиска русских слов нужен второй словарь в котором русские слова стоят на первом месте а английские на втором
rita_0705
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 125
01.05.2012, 11:49  [ТС]     Курсовая работа на тему англо-русский словарь #17
Цитата Сообщение от IFree Host Посмотреть сообщение
А какие слова вводишь? Надо английские. Для поиска русских слов нужен второй словарь в котором русские слова стоят на первом месте а английские на втором
английские ввожу, а писать так в самом файле номер проблел англ.слово пробел русское слово? а этот сам файл помещать в папку где сама программа или же в саму среду а именнго в bin ( какв паскале )
IFree Host
Заблокирован
01.05.2012, 11:51     Курсовая работа на тему англо-русский словарь #18
нет!!!!!! никаких номеров не надо!!!!!!
Это просто форматирование на форуме номера отображает, чтобы было сразу видно сколько строк в файле и на какую строку ссылаться в случае ошибки

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

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

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

Помещай туда где сама программа
вот я чайник ! извините за предоставленные трудности со мной ! Большое спасибо за помощь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 12:21     Курсовая работа на тему англо-русский словарь
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
IFree Host
Заблокирован
01.05.2012, 12:21     Курсовая работа на тему англо-русский словарь #20
Да никакой ты не чайник, просто - учишся, как и большинство здесь присутствующих. Удачи с курсовой.
Yandex
Объявления
01.05.2012, 12:21     Курсовая работа на тему англо-русский словарь
Ответ Создать тему
Опции темы

Текущее время: 06:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru