685 / 241 / 13
Регистрация: 02.04.2009
Сообщений: 692
1

Поиск слова в тексте.

21.04.2009, 08:01. Показов 24198. Ответов 6
Метки нет (Все метки)

Дан текстовый файл с расширением txt. В нем очень много слов с определениями. Слово и его определение записано в одну строку.

Пример:
слово – его определение
Еще слово – его определение

Нужно чтоб происходил ввод слова с клавиатуры, затем это слово проверялось по блокноту. Если слово в блокноте есть, то вывод всей строки (слово + определение), Если нет такого слова, то сообщение о отсутствие слова в базе.


Я что-то сделал не так, помогите пожалуйста исправить ошибку..


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
#include <iostream>
#include <windows.h>
#include <string.h>
#include <fstream>
 
using namespace std;
 
int main()
{
    char word[256];
    int count=0,i;
 
    ifstream wer("dict.txt");
    if(wer.fail())
    {
        cout<<"Error!"<<endl;
        return 1;
    }
 
    while(!wer.eof())
    {
        wer.getline(word,256);
        count++;
    }
    wer.close();
    ifstream wer2("dict.txt");
 
 
    char ** dict=new char*[count];
    for(i=0;i<count;i++)
    {
        dict[i]=new char[256];
        wer2.getline(dict[i],256);
    }
    wer2.close();
 
    cout<<"Enter word: ";
    cin>>word;
 
    for(i=0;i<count;i++)
        if(strstr(dict[i],word))
            cout<<dict[i];
 
    return 0;
}
Добавлено через 13 часов 34 минуты 44 секунды
странно, ни одного ответа.. это слишком просто?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2009, 08:01
Ответы с готовыми решениями:

Поиск слова в тексте
: 58 Вчера, 23:03 Поиск слова в тексте #1 (permalink) В текстовом файле fin.txt находится...

Поиск слова в тексте
Текст представляет собой програму на языке Си. Подсчитать количество инструкций for, вложеных в...

Поиск слова в тексте
Составить алгоритм поиска заданного слова в тексте. Слово и текст являются массивами символов...

Поиск самого короткого слова в тексте
Здравствуйте,у меня проблема с функцией поиска самого короткого слова в тексте,писал я ее где-то...

6
28 / 27 / 11
Регистрация: 12.03.2009
Сообщений: 85
21.04.2009, 10:38 2
Вставь этот код в цикл проверки массива строк
C++
1
2
3
4
5
6
7
int pos = strpos(dict[i], " -");           // Поиск вхождения подстроки
char* buffer = new char*[pos + 1];  
int k;                                           
for (k = 0; k < pos; i++) {               // Копирование слова
    buffer[k] = ****[i][k];
} 
buffer[k] = '\0';                             // В buffer твое искомое слово
1
3087 / 2408 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
21.04.2009, 13:30 3
Лучший ответ Сообщение было отмечено как решение

Решение

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
#include <iostream>
#include <windows.h>
#include <string.h>
#include <fstream>
 
using namespace std;
 
int main()
{
           char word[256], line[256], tmp[256];
    char *buf = NULL;
    ifstream file;
 
    cout << "Vvedite slovo: ";
    cin.get(word, 256, '\n');
    file.open("dict.txt", ios::in);
    if(!file)
          {
        cout<<"Error!"<<endl;
                       exit(1);
          }
 
    while (!file.eof())
    {
        file.getline(line, 256, '\n');
        strcpy(tmp, line);
        buf = strtok(tmp, " ");
        if (buf == NULL)
        {
            cout << "Error" << endl;
                       file.close();
                       system("pause");
            exit(1);
        }
        if (strcmp(buf, word) == 0)
        {
            cout << line << endl;
            system("pause");
            exit(0);
        }
 
    }
    cout << "Slovo ne naideno" << endl;
    file.close();
    system("pause");
    
    return 0;
}
Для русского шрифта рзультата не гарантирую, но с английским работает.
3
1664 / 1133 / 80
Регистрация: 21.08.2008
Сообщений: 4,725
Записей в блоге: 1
21.04.2009, 13:40 4
проще при старте проги загрузить все в map<string, string>, предварительно распарсив строку из файла - словаря на слово и определение. Слово в map-е будет являться ключаом, а определение - значением, а при вводе строки
C++
1
2
3
4
if(map<string, string>::find("введенная строка"))
{
// вывод куда надо
}
1
2 / 2 / 0
Регистрация: 29.05.2010
Сообщений: 8
29.05.2010, 15:51 5
Вот так вижу+оно ищет много слов:
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
#include <iostream.h>
#include <windows.h>
#include <string.h>
#include <fstream.h>
#include <stdlib.h>
 
int main()
{
    char word[256], line[256], tmp[256];
    char *buf = NULL, **mas;
    int kol=1, ch=0;
    ifstream file;
    cout << "Vvedite slovo: ";
    cin.get(word, 256, '\n');
        for(int i=0; i<strlen(word); i++){
        if(word[i]==' ') kol++;
        }
    mas=new char*[kol];
    for(i=0; i<strlen(word); i++) {
        int mm=0, lop=i;
        while(word[lop]!=' ' && word[lop]!='\n'){
        lop++;
        }
        lop=lop-i;
        mas[ch]=new char[lop];
        while(word[i]!=' ' && word[i]!='\n'){
        mas[ch][mm]=word[i]; mm++; i++;
        }
        mas[ch][mm]='\0';
        ch++;
    }
    int r=0;
    file.open("kurs.txt", ios::in);
    if(!file)
      {
        cout<<"Error!"<<endl;
               exit(1);
      }
while(r<kol){
    while (!file.eof())
    {
        file.getline(line, 256, '\n');
        strcpy(tmp, line);
        buf = strtok(tmp, " ");
        if (buf == NULL)
        {
               cout << "Error" << endl;
               file.close();
               system("pause");
               exit(1);
        }
        if (strcmp(buf, mas[r]) == 0)
        {
            cout << line << endl;
            goto g;
        }
 
    }
    cout << "Slovo ne naideno" << endl;
    g:
    file.clear();
    file.seekg(0,ios::beg);
r++;
}
    file.close();
    system("pause");
    delete mas;
    return 0;
}
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11144 / 7086 / 1674
Регистрация: 25.07.2009
Сообщений: 12,944
29.05.2010, 16:06 6
может я чего не понял?
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
#include <iostream>
#include <fstream>
#include <string>
 
int main(){
    std::string buf, to_find;
    char * file_name = "simple.txt";
    long cnt = 0;
    
    std::cout << "Word to find: ";
    std::cin >> to_find;
    
    std::ifstream ifs(file_name);
    if ( ! ifs.is_open() ){
        std::cerr << "Can't open file!" << std::endl;
        return 1;
    }
    
    while ( std::getline(ifs, buf) ){
        if ( buf.find(to_find) != std::string::npos ){
            std::cout << buf << std::endl;
            ++cnt;
        }
    }
    ifs.close();
    
    if ( ! cnt )
        std::cout << "No words found." << std::endl;
    else
        std::cout << "Found " << cnt << " word(s)" << std::endl;
    
    return 0;
}
1
kazak
29.05.2010, 16:08     Поиск слова в тексте.
  #7

Не по теме:

фига се тему откопали:)

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2010, 16:08

Поиск слова в тексте, считанном из файла
Задача: Определить, в каком по счету предложении впервые встретилось заданное слово. Готов код...

Поиск слова в тексте и вывод номер строки
Дан текстовый файл. Надо вывести на экран все строки, в которых встречается определенное слово.

Поиск под слова в тексте типу string
Как сделать поиск под слова в переменной типу string из рус. текстом Например если есть такое :...

Файловый ввод и поиск самого длинного слова в тексте
Здравствуйте. Нужно написать программу, которая вводит текст, состоящий из нескольких предложений,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru