Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите доработать программу (файлы) 
:(
    Опции темы
Юля2009
  Дата 26.6.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Вот задачка, в принципе она сделана, но считает неправильно

Условие задачи: Дан файл, содержащий текст. Выяснить входит ли данное слово в указанный текст, и если да, то сколько раз.

Код

program slovo;
uses crt;
var
filee: text;
s, sl: string;
i, d: integer;
begin
clrscr;
Writeln('Chto iskatj?');
readln(sl);
assign(filee, 'text2.txt');
reset(filee);
while not eof(filee) do
begin
readln(filee, s);
if pos(sl, s)>0 then
begin
d:=1;
i:=i+1;
end;
end;
close(filee);
If d=0 then Writeln('Slova net v texte') else begin
Write('Slovo vstrechayetsya ');
Write(i);
Write(' raz');
end;
ReadLn;
end.


Сам файл, с которого он считает:
okolo trex let nazad vozmozhno
bilo vce vce chto dyshe ygodno
i ne vashno bilo vozmozhno
ieto ili net okolo goda 
yzhe nichego ietogo ne
yvidish vce chto bilo 
to proshlo i ne prosto
proshlo a ischezlo i chto
bi nam ne govorili mi verim
chto vce bydet tak kak mi 
zaxotim i colnche i more i 
oblaka nad golovoi vce bilo
lycshe okolo trex let nazad

----------------------------------------------------------------------------------------------
В чем заключаеться проблема: Например вводим слово "vce", в тексте их всего 5, а он выводит что 4 раза... Как видите во второй строке файла, слово "vce" употребляеться 2 раза, а он считает за 1 раз... Когда используешь текст в котором на 1 строчку исп слово "vce" 1 раз, то он считает правильно, а когда используешь 2 раза, то считает за 1 слово...
Помогите пожалуйста доработать программу

PM MAIL   Вверх
ФедосеевПавел
Дата 26.6.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: 2
Всего: 10



Юля2009, а как считать, если ищем слово "vce", а в тексте присутствует "vcegda"?

Если засчитывать не надо, то алгоритм будет следующим:
1. Считать из файла следующую строку S.
2. Из строки S выделить следующее слово W, ограниченное символами [' ',',','.'].
3. Если слово W равно искомому слову - то увеличить счётчик найденных слов.
4. Выполняем п.п. 2-3 пока не закончилась строка.
5. Перейти к п.1.

Функцию выделения слова можно сделать так
Код

TYPE
  SetOfChar=Set of Char;
CONST
  {Список всех ограничителей слов в строке}
  Delim_Set : SetOfChar =[' ','.',',','!','?','-',':',';',
                          '(',')','[',']','{','}'];
{Выделение слова из строки s.
 Поиск слова начинается с позиции i.
 Если слов больше нет, то возвращается пустая строка.
 После выполнения функции переменая i равна индексу следующего за словом символа,
 т.е. вызывая из программы
  w1:=GetNextWord(s, i);
  w2:=GetNextWord(s, i);
  мы получим два идущих подряд слова из строки s}
FUNCTION  GetNextWord(CONST s:String; VAR i:Integer):String;
VAR
  ResWord       : String;
BEGIN
  ResWord:='';  {пока не найдено ни одного слова в строке}
  {i-текущая позиция в анализируемой строке}
  {ищем первую букву слова}
  while (i<=Length(s)) do
    if (s[i] in Delim_Set)
      then Inc(i)
      else Break;
  {теперь просматриваем слово пока не закончится строка или
   не начнутся ограничители слов}
  while (i<=Length(s)) do
    if (s[i] in Delim_Set)
      then Break
      else begin
        ResWord:=ResWord+s[i];  {добавляем букву слова к результату}
        Inc(i);
      end;
  GetNextWord:=ResWord;
END;


Это сообщение отредактировал(а) ФедосеевПавел - 26.6.2009, 19:28
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0903 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.