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

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

Войти
Регистрация
Восстановить пароль
 
tolik_it
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 1
#1

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

17.02.2011, 19:38. Просмотров 583. Ответов 0
Метки нет (Все метки)

Доброго всем времени суток! Я только начинаю изучать с++ и мне очень нужна помощь.. кому не сложно помогите пожалуйста...
Собственно суть вопроса в следующем:

Считать текст из файла и вывести на экран только предложения, содержащие введенное с клавиатуры слово.
Вот то что пока у меня получилось. Я только нахожу количество слов, а вот вывести все предложение содержащее это слово не получается все уже облазил но ничего конкретного не нашел..
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2011, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос вывод строки по заданному слову (C++):

Поиск строки в файле по заданному слову - C++
Ребят,подскажите. У меня создан текстовый файл,в котором 5 строк,каждая строка это новая книга,а именно автор,название,издатель,год...

Поиск строки по введенному слову - C++
Существует файл, в котором находится информация о клиентах, где в одну строку введены ФИО, название услуги, дата, телефон. как вывести...

Передача строки по слову в вектор - C++
Имеется переменная типа string в ней n количество слов разделенных пробелами, нужно заполнить вектор этими словами. Например. string...

По одному слову поочередно из каждой строки записать в третью - C++
Доброе время суток. Помогите плиз, ибо я начинающий программист. Даны два предложения char st1,st2, любого содержания, мне надо составить...

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод) - C++
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список товаров, хранящихся больше месяца, стоимость...

Можно ли разбить строки на слова при strtok и обратиться к нужному слову? - C++
Вот предположим есть какой-то текст fdjgd f.df dfdgwe wek eu fkkkk Предположим мне нужно поработать только с каким-то...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2011, 19:38
Привет! Вот еще темы с ответами:

Определить длину строки,удалить из строки все символы, которые равны заданному - C++
Доброго времени суток уважаемые форумчане. Помогите пожалуйста с написанием кода для данной задачи в вижуале. Если будет возможно,то с...

Поток string (получить доступ к каждому слову строки и к каждому символу каждого слова для сортировки) - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;string&gt; using namespace std; int main() { setlocale (LC_CTYPE,...

Вывод массива согласно заданному правилу. - C++
Вывести на экран числа в виде следующей таблицы: 41 42 43 ... 50 51 52 53 ... 60 61 62 63 ... 70 ... 71 72 73 ... 80

Одномерный массив. вывод символов по заданному условию - C++
Задан массив из строчных латинских букв. Вывести в алфавитном порядке все буквы, входящие в текст по одному разу. Не могу понять, как...


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

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

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