Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 16:02   #1
Юра5
Новичок
Джуниор
 
Регистрация: 09.12.2012
Сообщений: 1
По умолчанию (С++) Обработка текстов.

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

Пример содержимого текстового файла
Hello, my name is Ura. I live in Kyiv. The weather is fine.

Код:
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

class ListStr; 
class ListElem { 
  friend class ListStr; 
  string str; 
  ListElem * next;
public: 
  ListElem(string s = "", ListElem * pLE = NULL)
    : str(s), next(pLE) {}; 
  ~ListElem() { str = ""; }; 
};

class ListStr { 
  ListElem * first, * last;
public:
  ListStr();               
  ~ListStr();              
  int append(string & s); 
   
  bool presents(string & s); 
  
  void output(); 
};

ListStr::ListStr()
  : first(NULL), last(NULL) {};

int ListStr::append(string & s)
{ ListElem * pElem = new ListElem(s);
  if(pElem==NULL) return 0; 
  if(last==NULL) 
    { last = first = pElem; }
  else           
    { last->next = pElem; 
      last = pElem; 
    }
  return 1;
};

bool ListStr::presents(string & s)
{ ListElem * p = first;
  while(p && p->str != s) 
      p = p->next; 
  return (p != NULL);
};

void ListStr::output()
{ ListElem * p = first;
  while(p != NULL)
    { cout << p->str << '\n';  
      p = p->next; 
    }
  return; 
};

ListStr::~ListStr()
{ while(first != NULL) 
    { ListElem * t = first;
      first = first->next;
      delete t;   
    } 
  last=NULL;
};



void ReadF()
{ListStr el;
 string s;
 char ch;
 ifstream f("Text_List.txt");

 if(f.fail())
 {cout << "input file is absent\n"; 
      system("pause"); /*return 1*/; 
 }

else
  while ((f >> s)&&(f.get(ch)&& ch!=char(46)))
    if( !(el.presents(s)) ) 
      if( !(el.append(s)) )
        { cout << "append failed\n"; 
          system("pause"); /*return 1*/; 
        }
      el.output();

f.close();
}


int main()
{ReadF();
    system("pause");
    return 0;
}
Заранее Огромное Спасибо.

Последний раз редактировалось Юра5; 09.12.2012 в 16:05.
Юра5 вне форума Ответить с цитированием
Старый 09.12.2012, 17:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Считывай в переменную строковую весь файл сразу, а после примерно так:
Код:
	char s2[255];
	for(char *c=strtok(s,".");c;c=strtok(0,".")){
	   strcpy(s2,c);
           el.presents(s2)
           memset(s2,0,255);
	}
s - строка содержащая весь текстовый файл.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мастер текстов alexsampler Microsoft Office Excel 5 06.12.2011 14:44
КОДИРОВКА ТЕКСТОВ maikuduk Фриланс 9 04.04.2010 17:18
Сцепление текстов Igor001 Microsoft Office Excel 3 13.02.2010 16:27
Цифры текстов Maruff Microsoft Office Excel 1 10.12.2009 18:16