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

вывод строки по заданному слову - C++

Восстановить пароль Регистрация
 
tolik_it
Сообщений: n/a
17.02.2011, 19:38     вывод строки по заданному слову #1
Доброго всем времени суток! Я только начинаю изучать с++ и мне очень нужна помощь.. кому не сложно помогите пожалуйста...
Собственно суть вопроса в следующем:

Считать текст из файла и вывести на экран только предложения, содержащие введенное с клавиатуры слово.
Вот то что пока у меня получилось. Я только нахожу количество слов, а вот вывести все предложение содержащее это слово не получается все уже облазил но ничего конкретного не нашел..
PS ищет только английские слова
Заранее всем благодарен
Вот код
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
//---------------------------------------------------------------------------
 
 
#include <vcl.h>
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <fstream>
#include <iomanip>
#include <string>
#include <stdlib.h>
#include <stdio.h>
 
using namespace std;
const h=4;
const l=81;
char bufRus [256];
char* Rus(char* mes)
 { AnsiToOem (mes, bufRus);
    return bufRus;
 }
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{int length;
char line[l], *tok;
char delims[]=",.!?\|/()*:; ";
ifstream f("text.txt",ios::in);
//определяем длину файла
f.seekg(0,ios::end);
length=f.tellg();
f.seekg(0,ios::beg);
char *buf=new char[length+1];
f.read(buf, length);
f.close();
char s[2];
char k[81];
buf[length]='\0';
cout<<Rus("\nИсходный текст\n\n");
for (int i = 0; i < length; i++){
    s[0]=buf[i]; s[1]='\0';
    cout << Rus(s);}
cout<<Rus("\nВведите слово - ");cin>>k;
//ifstream d("text.txt",ios::in);
long n=0;//позиция начала предложения
long i=0, j=0;
FILE *d;
d=fopen("text.txt","r");
int kol=0;
//while (!d.eof())
while (!feof(d))
{
//d.get(line, sizeof(line),'\n');
fgets(line, sizeof(line), d);
tok=strtok(line, delims);
while (tok!=NULL)
{if (!strcmp(tok, k))
 
kol++;
tok=strtok(NULL, delims);}
}
cout<<Rus("\nКоличество найденных слов ")<<kol;
fclose(d);
delete [] buf;
if (getch()) exit(0);
    return 0;
}
 
//---------------------------------------------------------------------------
Добавлено через 10 часов 8 минут
Вопрос снят все получилось правда проверка окончания строки идет только по точке "." Всем спасибо
Вот код:
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
//---------------------------------------------------------------------------
 
 
#include <vcl.h>
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <fstream>
#include <iomanip>
#include <string>
#include <stdlib.h>
#include <stdio.h>
 
using namespace std;
const h=4;
const l=255;
char bufRus [256];
char* Rus(char* mes)
 { AnsiToOem (mes, bufRus);
    return bufRus;
 }
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{int length;
char line[l], *tok;
char delims[]=",.!?\|/()*:; ";
ifstream f("text.txt",ios::in);
//определяем длину файла
f.seekg(0,ios::end);
length=f.tellg();
f.seekg(0,ios::beg);
char *buf=new char[length+1];
f.read(buf, length);
f.close();
char s[2];
char k[81];
buf[length]='\0';
cout<<Rus("\nИсходный текст\n\n");
for (int i = 0; i < length; i++){
    s[0]=buf[i]; s[1]='\0';
    cout << Rus(s);}
cout<<Rus("\nВведите слово - ");cin>>k;
fstream d("text.txt",ios::in);
long n=0;//позиция начала предложения
long i=0, j=0;
int kol=0;                     
string text;
while (!d.eof())
{
getline(d, text, '.');
int r=text.length();
for (i = 0; i <= r; i++) line[i]=text[i];
if (strstr(line, k)) {
for (i = 0; i <= r; i++) {
s[0]=text[i]; //s[1]="";
cout<<Rus(s);
 
}
}
}
d.close();
delete [] buf;
if (getch()) exit(0);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2011, 19:38     вывод строки по заданному слову
Посмотрите здесь:

Передача строки по слову в вектор C++
C++ Вывод массива согласно заданному правилу.
C++ Одномерный массив. вывод символов по заданному условию
Вывод на экран чётных слов строки исправить на вывод нечётных слов C++
Можно ли разбить строки на слова при strtok и обратиться к нужному слову? C++
Поток string (получить доступ к каждому слову строки и к каждому символу каждого слова для сортировки) C++
C++ Определить длину строки,удалить из строки все символы, которые равны заданному
Поиск строки в файле по заданному слову C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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