Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Задачка не получается

Ответить
Настройки темы
C/C++ - Задачка не получается

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот условие. Вывести только те предложения из текстового файла(файл содержит какие-то предложения), которые содержат данное слово. Если нужно могу выложить свои наработки. Спасибо заранее!

Отправлено: 21:04, 12-08-2007

 

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


Darkfall, я программированием только начал заниматься и еще не работал с этим языком, но все равно хочу предложить свой вариант решения:
поскольку текстовый файл является последовательным, то нам никакого труда не составит его читать абзац за абзацем в строку. Загрузив абзац в строку нам надо его преобработать..тут вариантов много, но на мой взгляд сначало надо проверить абзац на наличие того СЛОВА...если его нет, то читаем новый абзац, а если есть, то начинаем его обрабатывать...находим позицию слова в строке и позицию символа, означающего окончание предложения (".","!","?"...) если похиция символа меньше слова, то удаляем то предложение и так до того, пока позиция символа меньше позиции слова, то есть в цикле. Когда нашли нужное предложение, то выводим его досимвола, означающего окончание предложения (".","!","?"...) и удаляем выведенное....все это распиши по циклам (окончание одного это пустая строка, а другого окончание файла) и должно работать....
Надеюсь тебе помогу, а если будут какие-то вопросы, то напиши распишу более подробно.

-------
"То , что нас не убивает , делает нас сильнее " Ф. Ницше.
________________________________________________
http://MyForum.topbb.ru - ОБО ВСЁМ!


Отправлено: 22:59, 18-08-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для bool

Старожил


Сообщения: 229
Благодарности: 9

Профиль | Отправить PM | Цитировать


что то вроде:
Код: Выделить весь код

#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <cstring>
using namespace std;

int main()
{
	
	ofstream out("test", ios::binary);
	char str[] = "bla bla bla bla . ble ble ble ble ble. blu blu blu blu. blo blo blo.";
	out.write(str,strlen(str));
	out.close();
	ifstream in("test", ios::binary);
	if(!in) {
		cout << "File didn't open\n";
		return 1;
	}
	char ch;
	string word;
	cout << "Input word: ";
	cin >> word;
	string s;
	while(!in.eof()) {
		in.get(ch);
		if(ch=='.') {
			if(s.find(word)!=-1) cout << s << endl;
			else cout << "No 8(\n";
			s.erase(0);
		}
		s=s+ch;
	}
	in.close();
	return 0;
}

Отправлено: 21:58, 19-08-2007 | #3

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Приукрашиваем код (используя наши знания STL )
Код: Выделить весь код
#include <iostream>
#include <string>

void doTheJob(istream& is, const string& word1)
{
  if (is.rdbuf())  // чтобы потом не слететь обращением к нулевому адресу is.rdbuf()->sbumpc();
  {
   string expression;
   
   while (getline(is, expression, '.')) // прочитали до точки
   {
       unsigned pos1 = expression.find(word1);

       if (pos1!=-1 &&  // а есть ли слово внутри?
            (pos1==0 || !isalpha(expression[pos1-1]) && // а в начале слова ли оно
            (pos1 + word1.size()==expression.size() || !isalpha(expression[pos1 + word1.size()])) // а не в конце ли оно?
           )
       {
         // нашли :-)
         cout << "found: " << expression << endl;
       }

       is.rdbuf()->sbumpc();  // съели точку
   }
  }
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:18, 31-08-2007 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Задачка не получается

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MSFT SQL Server - Задачка ValVlaGen Программирование и базы данных 6 27-08-2008 02:15
Задачка по С++ kiri Программирование и базы данных 1 21-06-2006 02:57
Задачка VuDZ Программирование и базы данных 4 02-04-2003 17:44
Задачка noname00.pas Программирование и базы данных 6 07-12-2001 11:43
Задачка... noname00.pas Программирование и базы данных 4 28-11-2001 03:17




 
Переход