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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2014, 19:43   #1
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
Восклицание Дан текст. Найти множество всех слов, которые встречаются во всех предло-жениях текста.

Задание:
Дан текст. Найти множество всех слов, которые встречаются во всех предложениях текста.
Исправьте код для Delphi7.
Код:
Const
Nums = ["0","1","2","3","4","5","6","7","8","9"];

Letters = [
 "q","w","e","r","t","y","u","i","o","p",
 "a","s","d","f","g","h","j","k","l","z",
 "x","c","v","b","n","m","Q","W","E","R",
 "T","Y","U","I","O","P","A","S","D","F",
 "G","H","J","K","L","Z","X","C","V","B",
 "N","M","й","ц","у","к","е","н","г","ш",
 "щ","з","х","ъ","ф","ы","в","а","п","р",
 "о","л","д","ж","э","я","ч","с","м","и",
 "т","ь","б","ю","Й","У","К","Е","Н","Г",
 "Ш","Щ","З","Х","Ъ","Ф","Ы","В","А","П",
 "Р","О","Л","Д","Ж","Э","Я","Ч","С","М",
 "И","Т","Ь","Б"];

 NumsAndLetters = Nums + Letters;

 WordChars = NumsAndLetters+["-"];

Procedure ParseWords(const s:String;p_nMinWordLength:Integer);
Var
c,r:String;
cn,l,n,k:Integer;
wrds:TStringList;

Function _ReadWord:Boolean;
Label m;
Begin

 m: Result:=False;  c:="";
 If n>(l+1) Then Exit;
 While True Do
  Begin
   If s[n] In WordChars Then Break;
   If n=l Then Break;
   Inc(n);
  End;

 c:=s[n];  Inc(n);
 While True Do
  
Begin

   If s[n] In WordChars Then c:=c+s[n] Else Break;
   If n=l Then Break;
   Inc(n);
  End;
 If Length(c)<=p_nMinWordLength Then GoTo m Else Result:=True;

End;

Begin


If Trim(s)="" Then Exit;
wrds:=TStringList.Create;
wrds.Sorted:=True;
l:=Length(s); n:=1;
While _ReadWord Do If c<>"" Then
 Begin
  r:=AnsiLowerCase(c);
  k:=wrds.IndexOf(r);
  If k=-1 Then wrds.AddObject(r,TObject(0)) Else wrds.Objects[k]:=TObject(Integer(wrds.Objects[k])+1);
 End;
Form1.Memo2.Lines.Add("Строка ""+s+""");
For k:=0 to wrds.Count-1 Do
 Form1.Memo2.Lines.Add("  Количество слов ""+wrds[k]+"":"+IntToStr(Integer(wrds.Objects[k])+1));
Application.ProcessMessages;
wrds.Free;
End;

procedure TForm1.sButton1Click(Sender: TObject);
Var i:Integer;
begin
  For i:=0 to Memo1.Lines.Count-1 Do ParseWords(Memo1.Lines[i],2);
end;

Последний раз редактировалось Anton94.by; 31.03.2014 в 15:13.
Anton94.by вне форума Ответить с цитированием
Старый 31.03.2014, 15:30   #2
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Этот код тоже для Delphi, но не считает. Исправьте ошибки. Пожалуйста.
Anton94.by вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан текст из слов, разделенных пробелами. Напечатайте все слова, которые состоят из тех же букв, что и последнее слово текста hunter129 Паскаль, Turbo Pascal, PascalABC.NET 3 21.11.2013 06:47
[c++]Дан файл, содержащий текст на русском языке. Составить в алфавитном порядке список всех слов, встречающихся в этом тексте. Jlovenpk1 Помощь студентам 0 25.01.2013 03:16
Обойтись без массива >Создать новый файл из чисел которые встречаются во всех трех файлах rootkot Паскаль, Turbo Pascal, PascalABC.NET 2 05.06.2012 11:04
Напечатать множество слов,которые встречаются в каждом из двух заданных предложений. masjanja55 Помощь студентам 2 08.02.2011 12:38