В строке найти количество слов, которые начинаются и заканчиваются одной и той же буквой - Pascal ABC

Формулировка задачи:

Дана строка, состоящая из русских слов, набранная заглавными буквами и разделенная пробелами(одним или несколькими).найти кол-во слов, которые начинаются и заканчиваются одной и той же буквой

Код к задаче: «В строке найти количество слов, которые начинаются и заканчиваются одной и той же буквой - Pascal ABC»

textual
const N = 100;
type words = array[1..N] of string;
var input_str:string;   // исходная строка
var wrd_from_str:words;  // слова из строки
var wrd_count:byte; // кол-во слов
var i,j:integer;
 
//функция возвращает строку без "лишних пробелов".
function DeleteSpaces(s:string):string;
begin
while pos('  ',s)>0 do delete(s,pos('  ',s),1);
if s[1]=' ' then delete(s,1,1);
DeleteSpaces := s;
end;
 
 
 
//процедура разбивает строку на слова
//@param s - исходная строка
//@param wrd - получаемый массив слов
//@param cnt - количество полученных слов
procedure DivStrToWrd(s:string;var wrd:words;var cnt:byte);
    var i,b:integer;
     divs:set of char;
     w:boolean;
    begin
    cnt :=0;
    divs:=[' ',',','.','!','?',':',';']; //разделители
    w:=false;
    s:=s+' ';
    for i:=1 to length(s) do
     begin
     if w then
      begin
      if s[i] in divs then
       begin
       inc(cnt);
       wrd[cnt]:=copy(s,b,i-b);
       w:=false;
       end;
      end else
      begin
      if not (s[i] in divs) then
       begin
       w:=true;
       b:=i;
       end;
      end;
     end;
    end;
 
 
begin
 
input_str := 'ФЫВА ОЛДЖ  ЙЦУКЕН АББА ОЛДО ЕНГЩ НОН';
input_str := DeleteSpaces(input_str);
DivStrToWrd(input_str,wrd_from_str,wrd_count);
 
//ord(c) - код символа
 j:=0; // счетчик для слов,в которых 1-я буква = последней букве
for i:=1 to wrd_count do
 begin
  //writeln(wrd_from_str[i]);  -- для отладки
  //writeln(ord(wrd_from_str[i][1]));  -- для отладки
  if (ord(wrd_from_str[i][1]) = ord(wrd_from_str[i][length(wrd_from_str[i])])) then
  begin
  j:=j+1;
  writeln(wrd_from_str[i]);
  end;
 end;
 writeln(j);
end.

6   голосов, оценка 4.167 из 5


СОХРАНИТЬ ССЫЛКУ