Главная » 2012 » Июнь » 7 » Pascal / delphi Задание : Дана строка текста.Вывести на экран слова ,в которых буква "а" входит не менее двух раз
21:52 Pascal / delphi Задание : Дана строка текста.Вывести на экран слова ,в которых буква "а" входит не менее двух раз |
{ Задание : Дана строка текста.Вывести на экран слова ,в которых буква "а" входит не менее двух раз . } uses crt; const MaxCountWord=1000; { максимальное количество слов в тексте } type Tword=record word:string; col:integer; end;
TDocumcent=record; WordList: array[1..MaxCountWord] of Tword;{список слов} WordListCount:integer; {список слов } end; var DocBody:TDocumcent; {тело документа } s,text:string; {строка } ai,i,x,lnstr:integer; {длина слова}
Procedure AddWord(word:string;var Doc:TDocumcent); var x:integer; begin for x:=1 to Doc.WordListCount do if Doc.wordlist[x].word=word then begin Doc.WordList[x].col:=Doc.WordList[x].col+1; exit; end; Doc.WordListCount:=Doc.WordListCount+1; Doc.WordList[Doc.WordListCount].word:=word; Doc.WordList[Doc.WordListCount].col:=1; end; Function CreateDocument(StextValue:string):TDocumcent; var doc:TDocumcent; s,s2:string; s3:string; im,i,y,start,x:Integer;
begin s2:=''; s3:=''; s:=StextValue; doc.WordListCount:=0; for x:=1 to length(s) do begin if (s[x] in ['A'..'Z','a'..'z','А'..'Я','а'..'я','0'..'9']) and (x<>Length(s)) then begin {список символов из которых могут сосотоять слова} if s2='' then start:=x; s2:=s2+s[x]; end else begin {если этот символ не из массива тех символов из которыйх могут состоять слова / значит это конец слова} if (s[x] in ['A'..'Z','a'..'z','А'..'Я','а'..'я','0'..'9']) then {список символов из которых могут сосотоять слова} s2:=s2+s[x]; if s2<>'' then begin // if (pos(s2,copy(stext,1,start))=0) and (pos(s2,copy(stext,start+length(s2),length(s)))=0) then AddWord(s2,doc);
s2:=''; end; end; end; CreateDocument:=doc; end; {возвращает количестов слов длина которыз len в представлении строки TDocumcent}
begin clrscr; text:='Задание : Поиск строки,удовлетворяющей заданному условию.'+#13+#10+ 'В какой из них больше слов,длина которых равна заданному пользователем числу?'+#13+#10+'Все вычисления должны выполнятся в функции'; DocBody:=CreateDocument(text);
for i:=1 to DocBody.WordListCount-1 do begin s:=DocBody.WordList[i].word; ai:=0; for x:=1 to length(s) do if (s[x] in ['а','А']) then ai:=ai+1; if ai>=2 then writeln(s); end;
end.
|
Просмотров: 2595 |
Добавил: NetSoftWare
| Рейтинг: 0.0/0 |
|