Приветствую Вас Гость | RSS

Delphi заготовки

Пятница, 10.05.2024, 07:14
Главная » 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
Всего комментариев: 0
Имя *:
Email *:
Код *: