Помогите сделать задания. Задания: 1) Дан текст. Найти множество всех слов, которые встречаются во всех предложениях текста. 2) Для каждого из слов заданного предложения указать, сколько раз оно встречается в предложении. Заранее Спасибо.Добавлено (13.04.14, 23:28) --------------------------------------------- Вот код для первого задания, конечно не знаю правильный ли, но хоть даже и правильный, то отладить у меня его не получилось: Код ConstNums = ["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; Добавлено (13.04.14, 23:30) --------------------------------------------- Вот код для второго задания, конечно не знаю правильный ли, но хоть даже и правильный, то отладить у меня его не получилось: Код program Project1;{$APPTYPE CONSOLE}
//uses crt;
var s,sl:string; k,i:integer; begin write('Vvedite tekst:'); readln(s); write('Vvedite slovo: '); readln(sl); k:=0; while pos(sl,s)>0 do begin k:=k+1; delete(s,pos(sl,s),length(sl)); end; writeln('Slovo v danom tekste vstre4aetsia ->',k, 'raz'); end.
|
|
|